文章目录
IOC(DI) 控制反转(依赖注入)
需要的包
IOC实现原理
【Spring创建对象的方式】
无参创建对象
构造创建对象
Spring默认调用clz.newInstance()方法创建对象,而这个方法本质上是调用无参构造器创建对象。如果一个类没有无参构造器,则此时会抛出异常。
可以通过配置bean的参数,实现控制spring容器通过指定构造器创建对象。
通过工厂创建对象
如果创建出来的对象需要经过若干设置后才能使用,spring也支持通过工厂创建bean。
所谓的工厂设计模式就是通过一个工厂类将创建对象的细节封装起来,之后通过工厂创建对象,简化创建对象的过程。
静态工厂
Spring-静态工厂
实例工厂
Spring-实例工厂
Spring工厂
Spring内置了工厂接口FactoryBean,也可以通过实现这个接口来开发Spring工厂
单例Spring
运行结果
在 Spring 里面,默认情况,bean 是单实例对象
懒加载
Spring实现 初始 销毁方法
DI依赖注入
在 创建对象的过程中Spring可以依据配置对对象的属性进行设置,这个过称之为依赖注入,也即DI。
set 方法注入、构造方式注入、自定义bean注入
通常的java bean属性都会私有化,而对外暴露setXxx()getXxx()方法,此时spring可以通过这样的setXxx()方法将属性的值注入对象。
构造方法的name=lili age=18是在创建对象时被注入的,之后又被set方法重新赋值了
自动装配的机制【autowire】
根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入
Spring注解
基本概念
什么是注解
案例
运行结果
添加注解来配置实例工厂
注解实现DI【系统自带的类型】
注解实现DI【自定义类型 用@Autowired】
在bean中的属性上通过@Autowired实现自定义bean类型的属性注入
其他注解
Spring MVC 三层架构
基本的MVC
Spring MVC
IOC负责创建bean
DI负责给这个属性进行赋值