SpringIOC 和 DI
SpringIOC是控制反转,DI是依赖注入,那么什么是控制反转和依赖注入呢,
第一我们要知道,控制反转中,谁控制谁,又反转给谁?
第二我们要知道,依赖注入中,谁依赖谁,谁又注入谁?
当然对于谁控制谁,那肯定是SpringIOC控制对象,控制的是对象的实例创建,我们在A中使用B,就必须把B创建出来,也就是我们要主动的获得B的实例,这种行为被称作正向的,那么什么是反向呢,就是A不再主动获取B,而是等待,等待SpringIOC容器或者DI帮助我们产生B的实例,然后反向注入到A类中。
对于依赖注入,我们要知道如果在C类中需要用到D的对象,那么C对于D来说就是C依赖于D,那么就需要在C中注入D,我们可以通过几种方式进行注入
1.set方法注入
2.构造方法注入
3.注解方式注入
4.接口方式注入
当然最简单的还是springmvc中通过扫描注解进行注入
这里我给大家操作一下通过set方法进行依赖注入
@Test
public void SpringIoc (){
// 产生Spring容器
String path = "applicationcontext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(path);
// 通过Spring容器拿到产生的对象
UserService userService = (UserService)ac.getBean("userService");
// 使用对象调用方法
userService.addtest2();
}
public class UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void addtest2(){
System.out.println("调用Service成功");
userDao.add();
}
public class UserDao {
public void add(){
System.out.println("调用userDao添加方法成功");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:context="https://www.springframework.org/schema/context"
xsi:schemaLocation="https://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 产生userService的实例 -->
<bean id="userService" class="test.myservice.UserService">
<!-- 在userService中注入userDao -->
<property name="userDao" ref="userDao"/>
</bean>
<!-- 产生userDao的实例 -->
<bean id="userDao" class="test.mydao.UserDao"></bean>
</beans>
这样配置成功后,我们通过JUnit测试
结果如下:
上一篇: Spark Streaming
下一篇: SSM核心框架概述