注意:本文章依据黑马程序员的SSM框架视频编写而成。
目录
前言
理解Spring框架中IoC和DI的概念。
一、IoC是什么?
IoC(Inversion of Control)控制反转:
使用对象时,将new出来的对象转换成由外部提供对象,将创建对象的控制权转交给外部来控制管理,这种思想被称为控制反转。
Spring框架基于这种控制反转思想提供了一个容器来充当外部,该容器被称为IoC容器。
其中IoC容器负责对象的创建,初始化等一类列工作,被创建或被管理的对象在IoC容器中统一被称为Bean。
1.通过配置文件告知IoC容器要管理的对象
<!--id表示Bean的名字 class表示Bean的定义类型-->
<bean id="bookDao" class="com.***.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.***.service.impl.BookServiceImpl">
2.获取IoC容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
其中applicationContext.xml为配置文件名。
3.获取Bean
BookDao bookDao = (BookDao) context.getBean("bookDao");
getBean()方法中的"bookDao"参数就是在配置文件中定义的Bean的id名称,这样就获得了由容器所创建的BookDaoImpl对象。
二、DI是什么?
DI(Dependency Injection)依赖注入:
在容器中建立Bean与Bean之间的依赖关系的过程被称为依赖注入。
三、如何在service层中如何调用dao层对象
1.在service的实现类中提供dao层对象的set方法
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
2.在配置文件中配置service和dao之间的关系
<bean id="bookService" class="com.***.service.impl.BookServiceImpl">
<!--配置service和dao之间的关系-->
<!--name标签表示配置哪一个具体的属性,即对象名-->
<!--ref表示参照哪一个bean名-->
<property name="bookDao" ref="bookDao"/>
</bean>
四、Bean相关和依赖注入相关
1.Bean相关
<bean
id="bookDao" bean的id
name="dao bookDaoImpl" bean别名
class="com.***.dao.impl.BookDaoImpl" bena类型
scope="singleton" 控制bean的实例数量
init-method="init" 生命周期初始化方法
destroy-method="destroy" 生命周期销毁方法
autowire="byType" 自动装配类型
/>
2.依赖注入相关
<bean id="bookService" class="com.***.service.impl.BookServiceImpl">
<constructor-arg name="bookDao" ref="bookDao"/> 构造器注入引用类型
<constructor-arg name="msg" value="WARN"/> 构造器注入简单类型
<property name="bookDao" ref="bookDao"/> setter注入引用类型
<property name="msg" value="WARN"/> setter注入简单类型
<property name="names"> list集合
<list>
<value>test</value> 集合注入简单类型
<ref bean="bookDao"/> 集合注入引用类型
</list>
</property>
</bean>