Spring5学习之路(1) IOC容器
IOC概念和原理
-
概念:控制反转,把对象创建和对象的调用过程交给Spring进行管理。
目的:降低耦合度
底层原理:xml,反射,工厂模式
为何要做这样一种操作,可以参考普通创建对象方式与工厂模式的区别。
原始的创建对象的方式耦合度太高,当UserDao发生变化时,UserService也要跟着进行修改。为实现高内聚、低耦合的目标,可以使用工厂模式。
若要进一步降低耦合度,可以使用IOC进行解耦。
//第一步:xml配置文件,配置创建的对象
<bean id = "dao" class = "com.atguigu.UserDao"></bean>
//第二步:有service类和dao类,创建工厂类(该步骤由spring执行)
class UserFactory{
public static UserDao getDao(){
String classValue = class属性值; //1、xml解析,此处class属性值为com.atguigu.UserDao
Class clazz = Class.forName(classValue); //2、通过反射创建对象,forName(类的全路径)
return (UserDao)clazz.newInstance;
}
}Spring提供IOC容器两种实现方式:(两个接口)
-
BeanFactory:Spring内部使用的接口,不提倡开发人员使用。
特点:加载配置文件的时不会创建对象,获取对象时才会创建对象。
-
ApplicationContext:BeanFactory的子接口,提供了更多更强大的功能,一般由开发人员使用。
特点:加载配置文件时会把配置文件里的对象进行创建。比如当服务器启动时,便将对象创建,以供后续使用,空间换时间。
ApplicationContext接口的两个实现类:
- FileSystemXmlApplicationContext:绝对路径,从盘符开始算起
- ClassPathXmlApplicationContext:相对路径,从src开始算起
IOC操作Bean管理(概念)
-
什么是Bean管理
Bean管理指的是两个操作:Spring创建对象和Spring注入属性
-
Bean管理有两种操作方式:
- 基于xml配置文件方式实现
- 基于注解方式实现
IOC操作Bean管理(基于xml方式)
-
基于xml方式创建对象
<!--配置User对象创建-->
<bean id = "user" class = "com.atguigu.spring5.User"></bean>- 在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
- 在bean标签有很多属性,常用属性:
- id:唯一标识
- class属性:类全路径(包类路径)
- 创建对象的时候,默认执行无参数构造方法完成对象创建
-
基于xml方式注入属性
第一种方法:使用set方法进行注入
(1)创建类,定义属性和对应的set方法
第二种方法:使用有参构造函数进行注入
-
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Abacteria的学习小站!