<一>Ioc控制反转——手把手教学:如何配置并使用单元测试一个spring框架(附源码)

本文是一篇关于Spring框架Ioc控制反转的教程,详细解释了如何配置bean.xml实现依赖注入。通过手把手的教学,指导读者创建Java项目,导入JUnit和Spring库,配置beans.xml,并进行单元测试。提供了源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓spring的ioc控制反转功能,举个例子:
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 .测试完成。

源码下载地址:

点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值