文章目录
IOC(Inversion Of Control)——控制反转
反转资源获取的方向。传统的方式为组件向容器发起请求查找资源。而IOC中容器主动将资源发送给管理的组件,组件只需要选择一种合适的方式来接受资源。
首先进行IOC容器的实例化,然后才能进行Bean的实例化。
Spring提供两种IOC类型容器:
- BeanFactory:基本实现
- ApplicationContext:更多高级功能。
DI(Dependency Injection)——依赖注入
组件以一些预定好的方式接受容器的资源注入。和IOC是一个概念。
- 属性注入 :setter方法
- 构造器注入:通过构造方法实现注入
- 工厂方法注入
Bean配置(通过xml文件)
class通过反射的方式在IOC容器中创建Bean,所以要求必须有class的无参数构造器。
写bean.xml时
id是bean的名称,在IOC容器中需唯一。id可以指定多个名字,名字间用逗号,分号或空格分隔。若无指定,将自动设置为类名。
class为全类名。
index-参数顺序 type-参数类型
property-引用属性(使用内部Bean时,通过级联属性赋值) ref-建立bean之间的引用关系
list set map配置属性集合
通过p命名空间为Bean的属性赋值
利用IOC容器自动装配,需要在Bean的autowire属性里指定自动装配的模式。装配会涉及Bean中所有的属性,且只能选择两种方式之一。不及手动装配细节。
byType:根据类型自动装配
byName:根据名称自动装配
Bean配置的继承与依赖
继承时可以选择继承,依赖时必须全部依赖。
Bean配置的作用域
Bean配置的生命周期
Bean配置(注解方式)
通过扫描组件,实例化具有特定注解的组件。
基本组件包括:
@Component:通用注解,对那些比较中立的类进行注释。
就是说把这个类交给Spring管理,由于不好说这个类属于哪个层面,就用@Component。
@Respository:持久层
@Service:服务层
@Controller:表现层
@Autowired:自动装配
@NoArgsConstructor为一个实体类构造无参数构造器。另:
@AllArgsConstructor 构造全参数构造器
@Data 为类中参数自动生成相关的方法,get,set,参数类型的默认方法等
@Builder 为类生成相对略微复杂的构建器API