Spring5
IOC 控制反转(Inversion of Control)思想
不直接创建对象,而是由xml解析和反射,通过spring容器获取对象
控制反转——由代码创建对象—>框架创建对象,用于解耦合
Spring实现IOC的两种方式(两种接口)
1、BeanFactory:最基本的内置方式,开发人员一般不适用,在程序运行时创建对象
2、ApplicationContext:BeanFactory的子接口,提供了更多更强大的功能,面向开发人员,在加载配置文件时创建对象(可以让耗时,耗资源的操作在服务器启动时进行,更加合理)
SpringBean管理
创建对象,注入属性
1)基于xml管理
创建对象,默认进行无参构造
<bean id="" class=""></bean>
DI:依赖注入,就是注入属性
Spring使用set方法或者有参构造注入属性
用property标签,默认调用set方法
<bean id="" class="">
<property name="" vakue=""></property>
</bean>
用constructor-arg标签调用有参构造
<bean id="" class="">
<constructor-arg name="" vakue=""></constructor-arg>
</bean>
p名称空间注入(了解)底层还是xml的set注入
属性中有特殊符号可以用&转义或者使用CDATA
属性为对象时可以用ref注入,外部Bean
<property name="xxxDao" ref="xxxDaoImpl"></property>
也可以用内部Bean,在一个Bean里面嵌套另外一个Bean的定义
继承实现FactoryBean接口的Bean可以使定义类型和返回类型不一样
默认情况下Spring的Bean是但实例对象,可以修改scope属性设置,配置是否多实例
Bean的生命周期
1)调用无参构造器创建对象
2)调用set方法注入属性
3)把Bean实例传给后置处理器
4)调用初始化方法(需要设置初始化方法)
5)把Bean实例传给后置处理器
6)获取Bean对象
7)容器关闭时销毁Bean
后置处理器需要手动创建,可以没有
后置处理器会对当前xml配置文件中所有Bean执行
Spring基于注解方式实现对象创建
@Component
@Service
@Controller
@Repository
引入依赖,开启组件扫描