- 浏览: 1574624 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
下面使用的 spring-3.0版本来演示
目标任务
1.配置最简单的,spring 应用
2.使用spring管理ServiceBean
3.手动编写代码 模拟 spring的初始工作
1.首先来看 spring 应用中最基本的jar
2.spring的配置文件 (可以从spring的文档中拷贝,或者 spring自带的 案例中拷贝)
3.就这样 我们就可以 来初始化 spring 容器 编写单元测试
//上面 如果测试单元没有问题 就说明 spring 框架 使用成功 !! 恭喜 !!
4.下面 来看 使用 spring容器来管理我们的 bean (首先定义bean--->然后配置)
5.在spring配置文件中配置
6.测试
//如果能在控制台 打印出 "我就是save方法!" 恭喜成功!
7.看了上面这么多 那么spring到底怎么初始化 和 管理的 我们的bean呢? 我们自己来模拟写一个 spring的 init 初始工作 (使用 dom4j 来读取配置文件 -->使用 反射来创建对象)
8.首先加入 dom4j-1.6.1.jar 和 jaxen.jar(dom4j需要的一个jar)
9.定义隐射spring配置文件bean 的类
10.定义 我们自己的 读取spring配置文件中的 ClassPathXmlApplicationContext 类
11.好啦 我们来测试吧
//如果 同样看到 "我就是save方法!" 我想 你应该对spring有所了解了吧?? 嘻嘻
//睡觉啦 呵呵 88
目标任务
1.配置最简单的,spring 应用
2.使用spring管理ServiceBean
3.手动编写代码 模拟 spring的初始工作
1.首先来看 spring 应用中最基本的jar
2.spring的配置文件 (可以从spring的文档中拷贝,或者 spring自带的 案例中拷贝)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> </beans>
3.就这样 我们就可以 来初始化 spring 容器 编写单元测试
package junit.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { @Test //测试 spring的 初始化 public void init(){ ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); } }
//上面 如果测试单元没有问题 就说明 spring 框架 使用成功 !! 恭喜 !!
4.下面 来看 使用 spring容器来管理我们的 bean (首先定义bean--->然后配置)
package com.person.service; public interface PersonService { public void save(); }
package com.person.service.impl; import com.person.service.PersonService; public class PersonServiceBean implements PersonService { public void save(){ System.out.println("我就是save方法!"); } }
5.在spring配置文件中配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> <!-- 这里配置后 就会有 spring来管理, 注意id 和name 的区别 --> <bean id="personService" class="com.person.service.impl.PersonServiceBean"> </bean> </beans>
6.测试
package junit.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.person.service.PersonService; public class SpringTest { @Test //测试 spring的 初始化 public void init(){ ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); //方法一 获取服务层对象 PersonService personService=(PersonService)ctx.getBean("personService"); //方法二 PersonService personService1=ctx.getBean("personService",PersonService.class); personService.save(); personService1.save(); } }
//如果能在控制台 打印出 "我就是save方法!" 恭喜成功!
7.看了上面这么多 那么spring到底怎么初始化 和 管理的 我们的bean呢? 我们自己来模拟写一个 spring的 init 初始工作 (使用 dom4j 来读取配置文件 -->使用 反射来创建对象)
8.首先加入 dom4j-1.6.1.jar 和 jaxen.jar(dom4j需要的一个jar)
9.定义隐射spring配置文件bean 的类
package junit.test; /** * 定义 保存 spring配置文件中的bean对象 * @author Bin */ public class BeanDefinition { private String id; //对应 spring配置文件中的id private String className; //对应 spring配置文件中的class //get set // 构造方法 }
10.定义 我们自己的 读取spring配置文件中的 ClassPathXmlApplicationContext 类
package junit.test; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.XPath; import org.dom4j.io.SAXReader; import com.sun.xml.internal.fastinfoset.stax.events.Util; /* * 来模拟spring 的工作 */ public class MySpringClassPathXmlApplicationContext { //保存 配置文件中的 bean 的信息 private List<BeanDefinition> beandefines=new ArrayList<BeanDefinition>(); //保存初始化 后的对象 private Map<String,Object> sigletons=new HashMap<String,Object>(); public MySpringClassPathXmlApplicationContext(String fileName) { this.readXml(fileName); this.instanceBean(); } /**================== * 读取xml配置文件 * ================== * @author Bin * @param fileName */ private void readXml(String fileName) { SAXReader saxReader=new SAXReader(); Document doucment=null; try { URL xmlPath=this.getClass().getClassLoader().getResource(fileName); doucment=saxReader.read(xmlPath); Map<String,String> nsMap=new HashMap<String,String>(); //给spring配置文件的命名空间 一个别名 ns nsMap.put("ns","http://www.springframework.org/schema/beans"); //加入命名空间 xmlns: spring配置文件中的 XPath xsub=doucment.createXPath("//ns:beans/ns:bean"); //创建 beans/bean 查询路径 xsub.setNamespaceURIs(nsMap); //设置命名空间 List<Element> beans=xsub.selectNodes(doucment); //获取文档下的所有bean节点 for (Element element : beans) { String id=element.attributeValue("id"); //获取 id的属性值 String clazz=element.attributeValue("class"); // 获取 class属性 //类是 spring中的 : org.springframework.beans.factory.config.BeanDefinition; BeanDefinition beandefine=new BeanDefinition(id,clazz); beandefines.add(beandefine); } } catch (Exception e) { e.printStackTrace(); } } /**=================================== * 完成Bean 的实例化 * =================================== * @author Bin */ private void instanceBean() { for (BeanDefinition beandefine : beandefines) { try { if(!Util.isEmptyString(beandefine.getClassName())) sigletons.put(beandefine.getId(), Class.forName(beandefine.getClassName().trim()).newInstance()); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /**======================= * 获取bean * ===================== * @param beanName * @return */ public Object getBean(String beanName){ return this.sigletons.get(beanName); } }
11.好啦 我们来测试吧
@Test //测试 自定义的spring 模拟器 public void testMySpring(){ MySpringClassPathXmlApplicationContext ctx=new MySpringClassPathXmlApplicationContext("applicationContext.xml"); //方法一 获取服务层对象 PersonService personService=(PersonService)ctx.getBean("personService"); personService.save(); }
//如果 同样看到 "我就是save方法!" 我想 你应该对spring有所了解了吧?? 嘻嘻
//睡觉啦 呵呵 88
发表评论
-
spring-session 中的坑
2017-07-06 15:34 9946spring-session 配置 依赖 gradle ... -
Spring AspectJ Aop Annotation
2017-03-29 17:08 670import org.aspectj.lang.Proce ... -
spring 第13天 使用@scheduled注解执行定时任务
2015-01-06 23:11 54027我们使用spring的注解 @Scheduled 执行定时任务 ... -
Spring 第12天,事务传播属性和 隔离级别
2014-09-28 00:36 7761 事务的传播属性(Propagation) 1) REQ ... -
spring 第11天 quartz任务调度
2014-08-24 13:59 1103Quartz是一个强大的企业级任务调度框架,Spring中继承 ... -
spring 第10 天 AOP 面向切面
2014-08-21 00:08 1722AOP(Aspect Orient Programming ... -
spring 第9天 Resurce 资源访问
2014-08-17 22:20 1830Spring Resource接口 spring提供的Reso ... -
spring 第8天 Spring 注解
2014-08-17 15:33 1439spring注解 @Component:标注一个普通的sp ... -
spring 第7天 Bean,BeanFactory处理器,配置器
2014-08-16 21:46 1191spring 两种后处理器 第一种,Bean 后处理器 对容器 ... -
spring 第6天SpEL,P命名空间,Util Schema
2014-08-13 22:52 1270使用p名称空间配置属性 ... -
spring 第5天不同作用域的bean,注入Field,方法返回值
2014-08-11 22:31 2069协调作用域不同步的bean 问题是;当一个singleton的 ... -
spring 第4天bean继承,init,destory-method
2014-08-10 17:54 1601深入理解Spring容器中的b ... -
spring 第3天使用java类和XML配置bean
2014-08-09 16:51 1465下面采用java类来配置bean,前面都采用xml进行配置be ... -
spring 第2天,bean作用域,自动注入集合
2014-08-06 22:16 1888sping容器中的Bean <!---beans的全 ... -
spring 第1天 IOC,DI,国际化,容器事件
2014-08-04 21:27 13621.构造注入(就是使用 构 ... -
SpringMVC 注解 和非注解
2014-01-26 10:29 17979首先看看非注解的项目结构 在web.xml文件 配置spr ... -
详解spring 每个jar的作用
2013-11-19 23:54 3873spring.jar 是包含有完整 ... -
Spring配置Hibernate事务
2013-11-10 13:45 1183为了保证数据的一致性,在编程的时候往往需要引入事务这个概念。事 ... -
Spring 中引用Properties文件
2013-08-29 14:39 10614其中部分配置信息(邮件发送相关): #邮件发送的相关配置 ... -
Spring IOC控制反转 依赖注入DI
2012-12-15 09:37 2299目录 1.使用IOC控制反转 中的DI依赖注入 手工注入 ...
相关推荐
spring 简单应用 通过接口 降低耦合度
spring框架的简单应用介绍 Spring框架的作用及其好处 Spring用于整合,好处是解耦。
对于初学spring框架者的简单应用的jar包集合 对于初学spring框架者的简单应用的jar包集合 对于初学spring框架者的简单应用的jar包集合
NULL 博文链接:https://elfasd.iteye.com/blog/2335733
实现最简单的spring框架的搭建,由详细的文档说明,通过junit测试来运行,查看结果.
Spring的简单应用
主要是对java spring,spring mvc等知识链条学习归纳,实现了前端jsp和后端spring交互的简单mvc应用,项目已经实现拦截器、过滤器和监听器,数据CURD简单操作,附mysql包。环境:开发工具-idea,mysql + java13 + ...
spring aop简单例子,入门学习的好资料
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单...
一个Spring开发的小例子,供学者学习
Spring Boot是一个基于Spring框架的开源项目,旨在简化Spring应用程序的开发、配置和部署。本文将详细介绍Spring Boot的基本概念、特性、常用注解和实践。我们将使用一个实际的示例,帮助你更好地理解和应用Spring ...
struts+spring+hibernate的简单应用 struts+spring+hibernate的简单应用 struts+spring+hibernate的简单应用
下载下来就可以运行,注释清晰,Spring4 In Action-5.2.2-Spring Web应用程序-简单的控制器实现跳转
第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。 第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架...
第11章Spring MVC常用参数的使用可运行源码 Spring MVC简单应用
简单的Spring入门例子一个最简单的spring示例,使用spring的MVC,并应用了spring的依赖注入,实现简单应用,索性放在这里供还没入门的spring爱好者参考,初步感受一下spring应用(spring高手就不必看了,这里并没有...
NULL 博文链接:https://fsh430623.iteye.com/blog/1226945
Spring_Security安全框架的简单应用步骤Spring_Security安全框架的简单应用步骤Spring_Security安全框架的简单应用步骤
spring 集合 smartupload 简单实现上传下载应用 spring 集合 smartupload 简单实现上传下载应用 spring 集合 smartupload 简单实现上传下载应用
NULL 博文链接:https://hermosa-young.iteye.com/blog/2043821