目录
一.ioc概念和原理
想在sevice中调用dao,目的降低二者的耦合度
ioc底层原理:xml解析,工厂模式,反射
二.bean管理(基于xml)
1.什么是bean管理
1.1 创建对象
1.2 注入属性
2. 注入属性的方法
2.1 属性是基本数据类型
2.1.1 通过set方法注入
2.1.2 通过有参构造器注入
2.1.3 p名称空间注入
2.1.4 字面量(属性的固定值)
null、特殊符号
2.2 属性是其他类
2.2.1 外部bean,就是属性是别的类
2.2.2 内部bean
内部bean和外部bean的区别:
外部bean:直接在beans标签内部直接定义的bean对象,外部bean可以被多个bean对象引用
内部bean:在某个bean标签的内部定义的bean对象,内部bean只能被某个对象的某个属性引用。
2.2.3 级联赋值
级联赋值和外部bean的区别:
在引入外部Bean的同时,给外部Bean设置了属性。
2.3 属性是集合
2.3.1 集合中是基本数据类型
2.3.2 集合中是对象类型
2.3.3 想把集合供多个类使用
3.FactoryBean
普通bean:返回的类型和配置文件中定义的类型相同
FactoryBean:返回的类型和配置文件中定义的类型不同
实现FactoryBean接口
实现getObject方法,定义返回bean
4.bean作用域、生命周期
4.1 作用域
所谓作用域就是单实例还是多实例
单实例就是创建两个book对象,指向的地址是相同的,多实例反之
通过scope=“prototyope”可以改变成多实例(默认是单实例singleton)
单实例的时候,加载spring配置文件的时候就会创造单实例对象
多实例在调用getBean方法时候创造多实例对象
4.2 生命周期
4.2.1 正常有五步
初始化方法和销毁方法要做配置
4.2.2 加入后置处理器,实现接口BeanPostProcessor
有7步,分别在(3)前后
加入到xml后会为配置文件中所有的配置加上后置处理器。
5. xml自动装配(autowire)
根据属性名称(beanid与类中属性名称相同)/属性类型
6. 引入外部属性文件
通过property,引入数据库中的数据
三.bean管理(基于注解方式)
1. 四个创建对象注解
@Component
@Service
@Controller
@Repository
2.过程
引入依赖->开启组件扫描->创建类,再类上添加创建对象注解->
组件扫描可以决定只扫描某个注解,也可以决定不扫描某个注解
3.属性注入
@Autowired 根据类型注入
@Qualifier 根据名称注入(要配合Autowired一起使用)
@Resource 可以根据类型也可以根据名称
@Value 注入普通类型属性(字符串等)
4.完全注解开发
创建配置类,替代xml配置文件
@Configuration 声明这是个配置类
@ComponentScan 开启扫描