Ioc:控制反转,将创建对象和对象之间的调用过程交给spring进行管理
Aop:面向切面,不修改代码,对功能进行增强
IOC 底层原理(1)xml解析,工厂模式,反射
通过xml解析,获取类路径,再通过反射加载类,创建对象
接口1.ioc思想是基于ioc容器,ioc容器底层是对象工厂
2.Spring提供ioc容器实现方式:
①BeanFactory
Ioc容器基本实现,spring内部接口,加载配置文件时,不会创建对象,获取对象使用时,才会创建对象。
②ApplicationContext
BeanFactory的子接口,提供更多强大的功能,一般开发用,加载配置文件时,会创建对象。
ClassPathXmlApplicationContext:src路径下的配置文件
FileSystemXmlApplicationContext:系统盘的路径下的配置文件
IOC操作Bean管理内容:
(1)Spring创建对象
(2)Spring注入属性
方式:
一、基于xml配置文件实现- 创建对象
①使用Bean标签,标签添加对应属性
②id属性:唯一标识 (类似名字)class属性:类全路径
③创建对象时,默认执行无参构造
- 注入属性
①DI:依赖注入,即注入属性
a. 使用set方法
α.properties标签
name类属性名,(.xxx 需要有get方法,可实现级联赋值)
value向属性注入的参数
ref向属性注入外部bean(可实现级联赋值)
β.使用p名称空间注入
添加p名称在配置文件中
bean标签 p:xxx (属性名)= ""(参数)
b.使用有参构造
constructor-arg标签 name类属性名(index属性名下标),value向属性注入的参数
c.注入数组,list,map,set类型(①集合中设置对象 ②提取集合提取util并注入)
*当设值为null
*当设值为带特殊符号
spring有两种bean:
- 普通bean:在配置文件中定义类型与返回类型一致
- 工厂bean(FatoryBean):在配置文件中定义类型与返回类型可以不一致
bean的作用域:spring中bean默认时单实例对象
在配置文件可设置scope:
singleton(默认值,单例):加载配置文件就会创建单实例对象
prototype(多例):获取对象使用getBean时,才会创建多实例对象
bean生命周期
(生命周期:从对象创建到对象销毁的过程)
若有bean后置处理器:加上红色两步
(1)通过构造器创建bean实例(无参构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(3)把bean实例传递到bean后置处理器的方法postProcessBeforeInitialization
(4)调用bean的初始化方法(需要进行配置初始化的方法)
(5)把bean实例传递到bean后置处理器的方法postProcessAfterInitialization
(6)bean可以使用了(对象获取到了)
(7)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)
xml自动装配autowire
(1)根据属性进行自动装配byName
(2)根据类型进行自动装配byType
外部属性注入
引入context名称空间,context:property-placeholder location="class:"加载properties文件
value="${(properties文件的key)}"
二、基于注解方式实现注解:@名称(属性名=属性值),作用于类,方法,属性,简化xml配置
创建对象
@Component
@Service
@Controller
@Repository
四个功能都一样,都是创建bean实例



