前言:
注入有两种方式:1、设值注入
2、构造注入
(一)设值注入
1、新建一个xml文件:injection.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.xsd" >
<!-- 在service中注入dao,那么name属性与InjectionServiceImpl中定义的private InjectionDao dao ;一致
ref引用的值,与下面com.yuna.injection.InjectionDaoImpl中声明的bean id 一致
-->
<bean id = "injectionService" class="com.yuna.injection.InjectionServiceImpl">
<property name="dao" ref = "injDao"></property>
</bean>
<bean id = "injDao" class="com.yuna.injection.InjectionDaoImpl"></bean>
</beans>
2、新建接口InjectionDao
public interface InjectionDao {
public void saveInfo(String info) ;
}
3、新建接口InjectionDao的实现类
public class InjectionDaoImpl implements InjectionDao {
@Override
public void saveInfo(String info) {
System.err.println("Dao - 将数据保存到数据库中:" + info);
}
}
4、新建接口InjectionService
public interface InjectionService {
public void doSomeThing(String someThing) ;
}
5、新建接口的InjectionService实现类InjectionServiceImpl
public class InjectionServiceImpl implements InjectionService{
private InjectionDao dao ;
//1、设值注入
public void setDao(InjectionDao dao) {
this.dao = dao;
}
@Override
public void doSomeThing(String someThing) {
System.out.println("server-处理相关数据:" + someThing);
someThing = someThing + ":" + this.hashCode();
dao.saveInfo(someThing);
}
6、在测试类TestInject中写个测试设值注入的方法
public class TestInject extends UnitTestBase{
public TestInject() {
super("classpath:injection.xml");
}
@Test
public void testSetValueInj () {
InjectionService service = super.getBean("injectionService");
service.doSomeThing("这是要处理的数据");
}
}
(二)构造注入
1、我们在InjectionServiceImpl类中添加一个构造器
//2、构造注入
public InjectionServiceImpl(InjectionDao dao) {
this.dao = dao;
}
2、在测试类中新增测试构造注入的方法
public class TestInject extends UnitTestBase{
public TestInject() {
super("classpath:ConstructorInjection.xml");
}
@Test
public void testConstructInj() {
InjectionService service = super.getBean("injectionService");
service.doSomeThing("这是要处理的数据");
}
}