1. @Configuration
- 相当于之前xml文件
- 标在类型上,配合@bean注解定义bean
- 其标注的类也会作为bean,被添加的容器中
属性说明
属性 | 说明 |
---|---|
value | bean名称 |
proxyBeanMethods | 指定由@Bean注解定义的对象是否需要cglib代理,如果不代理,那么在调用@Bean注解标注的方法时返回的不是容器中的bean,只是一个普通的方法调用new 了一个新对象。 |
2. @Bean
- 定义容器中的bean,会被spring加入容器
属性说明
属性 | 说明 |
---|---|
value | 指定的bean 名称 |
name | 指定的bean 名称 |
autowireCandidate | 是否作为候选bean,存在多个相同类型的bean时,优先使用非候选bean |
initMethod | 初始化方法名 |
destroyMethod | bean在被垃圾回收时调用的方法名 |
3. @DependsOn
- 该注解标注的bean,依赖指定bean,即依赖bean必须先创建。不是强依赖(字段属性注入,字段构造函数注入)。
属性说明
属性 | 说明 |
---|---|
value | 依赖的bean名称 |
4. @ComponentScan
- 扫描指定包及其子包下的类
属性说明
属性 | 说明 |
---|---|
value | 不搜索哪些类 |
nameGenerator | 名称定义class,用于定义bean名称 |
scopeResolver | bean所属域的解析器 |
basePackages | 指定从哪些包开始 |
basePackageClasses | 指定从哪些类所在的包开始 |
useDefaultFilters | 是否使用默认过滤器,过滤bean,默认搜索这些注解标注的类 @Component @Repository @Service @Controller |
includeFilters | 包含过滤器,满足过滤条件的bean才会被添加到容器 |
excludeFilters | 忽略过滤器,满足过滤条件的bean不会被添加到容器 |
lazyInit | 指定bean是否需要懒加载 |
5. @ConditionalOnBean
- 如果容器中存在满足指定条件的bean,则加载被标注的bean。
属性说明
属性 | 说明 |
---|---|
value | 指定的bean class |
type | 指定的bean 类型名称 |
annotation | 指定的bean 要包含的注解 |
name | 指定的bean 名称 |
search | 是否搜寻父容器或所有祖先容器 |
parameterizedContainer | 指定的bean是该属性值(一个参数化类型class)的参数 |
6. @ConditionalOnMissingBean
- 如果容器中不存在满足指定条件的bean,则加载被标注的bean。
属性说明
属性 | 说明 |
---|---|
value | 指定的bean class |
type | 指定的bean 类型名称 |
annotation | 指定的bean 要包含的注解 |
name | 指定的bean 名称 |
search | 是否搜寻父容器或所有祖先容器 |
parameterizedContainer | 指定的bean是该属性值(一个参数化类型class)的参数 |
ignored | 不匹配指定的class |
ignoredType | 不匹配指定的class的类型名称 |
5. @ConditionalOnClass
- 如果类路径中存在满足指定条件的class,则加载被标注的bean。
属性说明
属性 | 说明 |
---|---|
value | 指定的class 类型 |
name | 指定的class 名称 |
6. @ConditionalOnMissingClass
- 如果类路径中不存在满足指定条件的class,则加载被标注的bean。
属性说明
属性 | 说明 |
---|---|
value | 指定的bean class |
7. @ConditionalOnProperty
- 如果容器存在满足指定条件的属性,则加载被标注的bean。
属性说明
属性 | 说明 |
---|---|
value | 属性名 |
prefix | 属性名前缀 |
name | 属性名 |
havingValue | 指定属性值 |
matchIfMissing | 如果容器中不存在该属性,是否匹配,默认不匹配 |
7. @ConditionalOnResource
- 如果类路径中存在满足指定条件的资源(文件等),则加载被标注的bean。
属性说明
属性 | 说明 |
---|---|
value | 资源路径 |
8. @ConditionalOnSingleCandidate
- 如果容器中只有一个指定类型的主bean或候选bean,则加载被标注的bean。
属性说明
属性 | 说明 |
---|---|
value | bean 的class |
type | bean 的class名称 |
search | 是否搜寻父容器或所有祖先容器 |
9. @Import
- 导入bean,三种方式。
- ImportSelector实现类:返回的是类全路径名
- ImportBeanDefinitionRegistrar实现类:直接注册beanDefinition
- 直接当做@Configuration注解的类处理
属性说明
属性 | 说明 |
---|---|
value | 可以是三种class,分别为ImportSelector实现类,ImportBeanDefinitionRegistrar实现类,标注@Configuration注解的类 |
10. @ImportResource
- 一般用于引入xml文件中的bean
属性说明
属性 | 说明 |
---|---|
value | 文件位置 |
locations | 文件位置,可以时多个 |
reader | 用于从文件中解析并读取bean |
11. @Lazy
- 是否懒加载bean
属性说明
属性 | 说明 |
---|---|
value | 是否懒加载bean |
12. @Primary
- 标记bean为主bean,如果有同类型多个相同bean,该bean被注入。
13. @Profile
- 如果环境匹配才会加载其标注的bean
- 一般环境分为三种,开发(dev),测试(test),生产(prod)
属性说明
属性 | 说明 |
---|---|
value | 环境名称 |
13. @PropertySource
- 读取配置文件并返回PropertySource实现对象,交由spring使用
属性说明
属性 | 说明 |
---|---|
name | PropertySource实现对象的名称 |
value | 配置文件位置 |
ignoreResourceNotFound | 是否忽略不存在的配置文件 |
encoding | 配置文件使用的编码 |
factory | 读取并解析配置文件,返回PropertySource实现对象 |
14. @Role
- 定义bean的角色
- 如果标注在@Configuration标注的类上,只影响@Configuration标注的类(也会被当做bean)本身,不影响其中@Bean定义
- 角色有三种
- ROLE_APPLICATION:默认值
- ROLE_INFRASTRUCTURE:三方框架内部使用的bean,对于框架使用者来说没有意义
- ROLE_SUPPORT:
属性说明
属性 | 说明 |
---|---|
value | 角色名称 |
15. @Scope
- 定义bean的生命周期范围,常见的几种
- SCOPE_PROTOTYPE:每次获取都是新的一个
- SCOPE_SINGLETON:每次获取都是同一个
- SCOPE_REQUEST:每个新的请求期间都是同一个
- SCOPE_SESSION:每个session期间都是同一个
属性说明
属性 | 说明 |
---|---|
value | scope名称 |
scopeName | scope名称 |
proxyMode | bean初始化依赖了还没有生成的某个bean,比如SCOPE_REQUEST在请求期间才会生成的bean,那么可以为这个依赖先生成一个代理对象 |