<一>Ioc控制反转——手把手教学:如何配置并使用单元测试一个spring框架(附源码)
2014-11-29 09:57
816 查看
所谓spring的ioc控制反转功能,举个例子:
其中,PersonDaoBean是在应用内部创建及维护的,所谓控制反转就是应用本身不负责依赖对象的创建及维护,而是交给外部容器来负责
即在bean.xml文件中,通过如下语句来实现:
如上,实现控制反转之后,PersonServiceBean类可以改写成如下:
所谓依赖注入,就是指运行期间由外部容器动态地将依赖对象注入到组件中。
---------------------------------------------------------------------------------------------------------------------------
下面开始手把手教学:如何配置并使用单元测试一个spring框架:
1、新建一个Java project即可
2、右键项目,build path--->add library
选择JUnit导入单元测试需要的包;
右键项目,build path--->add library
选择MyEclipse library---->spring 2.5.6导入spring需要的包;
(统一导包技巧,右键项目,build path--->configure build path)
3、右击src创建并配置beans.xml
4、编写测试代码:
//接口类
5、注意,如果运行该项目的话,会提示 log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly. 解决方法: 在src目录下新建一个文件:log4j.properties ,文件名就是这个,一个字也不能错,复制一下以下信息到文件中,保存即可
6、右击SpringTest.java,run as JUnit TEST .测试完成。
源码下载地址:
点击打开链接
public class PersonServiceBean { private PersonDao personDao=new PersonDaoBean(); public void save(Person person){ personDao.save(person); } }
其中,PersonDaoBean是在应用内部创建及维护的,所谓控制反转就是应用本身不负责依赖对象的创建及维护,而是交给外部容器来负责
即在bean.xml文件中,通过如下语句来实现:
<?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/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="personService" class="cn.chen.service.impl.PersonServiceImpl"></bean> <!--class表示类的路径,id表示由spring容器来创建该类的一个对象--> </beans>
如上,实现控制反转之后,PersonServiceBean类可以改写成如下:
public class PersonServiceImpl { private PersonDao personDao; public void save(Person person){ personDao.save(person); } //使用setter方法,让容器把创建好的依赖对象注入到<span style="font-family: Arial, Helvetica, sans-serif;">PersonServiceImpl</span> public PersonDao getPersonDao() { return personDao; } public void setPersonDao(PersonDao personDao) { this.personDao = personDao; } }
所谓依赖注入,就是指运行期间由外部容器动态地将依赖对象注入到组件中。
---------------------------------------------------------------------------------------------------------------------------
下面开始手把手教学:如何配置并使用单元测试一个spring框架:
1、新建一个Java project即可
2、右键项目,build path--->add library
选择JUnit导入单元测试需要的包;
右键项目,build path--->add library
选择MyEclipse library---->spring 2.5.6导入spring需要的包;
(统一导包技巧,右键项目,build path--->configure build path)
3、右击src创建并配置beans.xml
<?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/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="personService" class="cn.chen.service.impl.PersonServiceImpl"></bean> <!--class表示类的路径,id表示由spring容器来创建该类的一个对象--> </beans>
4、编写测试代码:
//接口类
package cn.chen.service; public interface PersonService { public void save(); }//实现类
package cn.chen.service.impl; import cn.chen.service.PersonService; public class PersonServiceImpl implements PersonService{ @Override public void save() { // TODO Auto-generated method stub System.out.println("我是save()方法"); } }//测试类。SpringTest.java。代码中的@BeforeClass、@Test即单元测试的标识
<pre name="code" class="java">public class SpringTest { @BeforeClass public static void setUpBeforeClass() throws Exception{ } @Test public void instanceSpring(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");//读取spring配置文件 PersonService personService = (PersonService) ctx.getBean("personService");//根据id值获得该类PersonService的对象,注意是获得,而不是创建,创建是由spring容器来完成的 personService.save(); } }
5、注意,如果运行该项目的话,会提示 log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly. 解决方法: 在src目录下新建一个文件:log4j.properties ,文件名就是这个,一个字也不能错,复制一下以下信息到文件中,保存即可
log4j.rootLogger=info,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.logger.uk.ltd.getahead.dwr= log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%c:%L) %d{yyyy-MM-dd HH:mm:ss,SSS} ---- %m%n log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %d{yyyy-MM-dd HH\:mm\:ss,SSS} %n%t %c ---- %m%n
6、右击SpringTest.java,run as JUnit TEST .测试完成。
源码下载地址:
点击打开链接
相关文章推荐
- <四>Ioc控制反转——为bean.xml瘦身第一步(附源码)
- <二>Ioc控制反转——bean id什么时候实例化(附源码)
- <三>Ioc控制反转——bean.xml注入对象、值和集合(附源码)
- <五>Ioc控制反转——为bean.xml瘦身第二步(附源码)
- Cocos2d入门 <一>建立一个新工程
- jsp使用<c:choose>标签来控制内容显示
- <配置> Ubuntu gcc 安装 使用方法
- 如何在前台使用<%#eval( )%> 传递多个参数
- &lt;转&gt;RestKit在iOS项目中的使用,包含xcode配置说明
- <如何创建一个实体历史> 时间维度 让 1:n的 产生新的实体 或者关系
- 一个分解字符串函数strtok 实现(不使用<string.h>)
- spring aoc控制反转学习<一>
- HTML5-关于如何使用<input>tags~汇总
- 如何使用<identity impersonate="true"/>
- <转>云主机配置OpenStack使用spice的方法
- 如何使用<identity impersonate="true"/>
- 使用<appSettings>元素定义配置参数
- 如何使用<Beginning ASP.NET 3.5 in C# and VB>书中的示例代码
- sp使用<c:choose>标签来控制内容显示
- Mybatis 使用<where>标签时遇到的一个问题与<trim>标签的使用