一.设值注入
1.建立InjectionDaoImpl和InjectionServiceImpl两个类分别为InjectionDao和InjectionService两个接口的实现类,且InjectionDAO为InjectionServiceImpl的一个属性
public class InjectionServiceImpl implements InjectionService{ private InjectionDAO injectionDAO; //设置注入 public void setInjectionDAO(InjectionDAO injectionDAO) { this.injectionDAO = injectionDAO; } @Override public void save(String arg) { System.out.println("Service 接受参数:" + arg); arg = arg + ":" + this.hashCode(); injectionDAO.save(arg); } }
2.spring-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" > <bean id="injectionService" class="main.com.pt.ioc.injection.service.InjectionServiceImpl"> <property name="injectionDAO" ref="injectionDAO"></property> </bean> <bean id="injectionDAO" class="main.com.pt.ioc.injection.dao.InjectionDaoImpl"></bean> </beans>
二.构造注入
1.同上定义一个仿数据库操作有四个类
public class InjectionServiceImpl implements InjectionService{ private InjectionDAO injectionDAO; //构造注入 public InjectionServiceImpl(InjectionDAO injectionDAO){ this.injectionDAO = injectionDAO; } @Override public void save(String arg) { System.out.println("Service 接受参数:" + arg); arg = arg + ":" + this.hashCode(); injectionDAO.save(arg); } }
2.spring-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" > <bean id="injectionService" class="main.com.pt.ioc.injection.service.InjectionServiceImpl"> <constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg> </bean> <bean id="injectionDAO" class="main.com.pt.ioc.injection.dao.InjectionDaoImpl"></bean> </beans>
三.测试方法
@RunWith(BlockJUnit4ClassRunner.class) public class TestInjection extends UnitTestBase{ public TestInjection(){ super("classpath*:spring-injection.xml"); } @Test public void testSetter(){ InjectionService service = super.getBean("injectionService"); service.save("对不起,你是傻逼"); } }