type
status
date
slug
summary
tags
category
icon
password
1.ioc容器
spring管理所有组件,运行boot返回ioc容器;
1.1创建时机:容器启动过程中就会创建组件对象
1.2单实例特性:所有组件默认是单例的,每次获取直接从容器中拿,容器提前会创建组件
可以获取所有组件名称并打印
2.bean组件
按照名称来获取组件
按照类型来获取组件
按照名称+类型精确获取组件
一些注意点
- 组件不存在,抛异常 NoSuchBeanDefinitionException
- 组件不唯一,按照类型只要一个,抛异常 oUniqueBeanDefinitionException
- 组件不唯一,按照类型返回多个,用Map集合
- 组件名字全局唯一,组件名重复了,报错
3.Configuration配置类
@Configuration 标注配置类,可用于配置bean组件
4.SpringMVC分层注解
给人看的,实际都是Component
5.ComponentScan组件扫描
写在配置类上扫描当前包及其子包,注册了的组件
6.Import导入外部类
外部类无法标注解,只能导入
7.Scope作用域
8.Lazy懒加载
默认为饿汉式加载,修改为懒汉式加载,标注在@Bean的上方
懒汉加载是指在首次使用时才创建对象实例,而饿汉加载则是在类加载时就创建对象实例。
9.FactoryBean
应用场景:如果制造的组件比较复杂,利用工厂方法进行创建
FactoryBean在容器中的组件的类型,是接口中泛型指定的类型,组件的名字是工厂自己的名字
10.Conditional条件注册
标注在@bean的上方,需要添加一个条件类
此外还有多种特殊条件注解
- @Conditional:这是最基本的条件注解,它可以接受一个或多个Condition接口的实现类作为参数。只有当所有条件都满足时,才会创建或注册Bean。
- @ConditionalOnBean:这个注解用于检查指定的Bean是否存在于Spring容器中。如果存在,则创建或注册当前Bean。
- @ConditionalOnMissingBean:与@ConditionalOnBean相反,这个注解用于检查指定的Bean是否不存在于Spring容器中。如果不存在,则创建或注册当前Bean。
- @ConditionalOnClass:这个注解用于检查指定的类是否存在于类路径中。如果存在,则创建或注册当前Bean。
- @ConditionalOnMissingClass:与@ConditionalOnClass相反,这个注解用于检查指定的类是否不存在于类路径中。如果不存在,则创建或注册当前Bean。
- @ConditionalOnProperty:这个注解用于检查指定的属性是否存在于配置文件中,并且其值是否满足指定的条件。如果满足条件,则创建或注册当前Bean。
- @ConditionalOnResource:这个注解用于检查指定的资源是否存在于类路径中。如果存在,则创建或注册当前Bean。
- @ConditionalOnWebApplication:这个注解用于检查当前应用是否是一个Web应用。如果是,则创建或注册当前Bean。
- @ConditionalOnNotWebApplication:与@ConditionalOnWebApplication相反,这个注解用于检查当前应用是否不是一个Web应用。如果不是,则创建或注册当前Bean。