一、IoC
-
Ioc(Inversion of Control)控制反转
使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部。
Spring对IoC进行了实现
- 提供了容器,IoC,用来充当外部。
- IoC容器负责初始化,这些被初始化的对象,称为Bean。
DI:依赖注入。
- 在容器中建立Bean与Bean之间的关系,称为依赖注入。
二、IoC案例
-
2.1 分析
- 管理什么:Service和Dao
- 如何将被管理的对象告知IoC容器:配置
- 被管理的对象交给IoC容器,如何获取到IoC容器:接口
- IoC容器得到后,如何从容器中获取Bean:接口方法
- 使用Spring导入哪些坐标:Pom.xml
2.2 步骤
导入pom.xml坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>定义spring管理的类和接口
创建Spring配置文件,配置对应类作为Spring管理的Bean
<beans>
<bean id="bookService" class="xxxx.xxxx.BookServiceImpl"></bean>
</beans>初始化IoC容器,通过容器获取Bean
ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
BookService bs = (BookService) ctx.getBean("bookService");
三、DI案例
-
3.1 分析
- 基于IoC管理Bean
- Service中使用new形式创建的Dao对象是否保留:否
- Service中需要的Dao对象如何进入到Service中:提供方法
- Service与Dao之间的关系如何描述:配置
3.2 步骤
- 删除new创建的对象代码
- 配置setter方法
public class BookServiceImpl xxx {
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
} - 配置service和dao之间的关系
<beans>
<bean id="bookDao" class="xxx"/>
<bean id="bookService" class="xxxx.xxxx.BookServiceImpl">
<property name="bookDao" ref="bookDao"/>
</bean>
</beans>