SpringBoot配置优先级和Bean管理
- 1)SpringBoot配置优先级
- 2)Bean管理
- 【1】获取bean
- 【2】bean作用域
- 【3】第三方bean
1)SpringBoot配置优先级
优先级(低>高)
- application.yaml(忽略)
- application.yml
- application.propertiesjava系统属性(-Dxxx=xxx
- 命令行参数(–xxx=xxx)
2)Bean管理
【1】获取bean
默认情况下,Spring项目启动时,会把bean都创建好放在10C容器中,如果想要主动获取这些bean
- 首先需要注入IOC容器对象:
@Autowired
private ApplicationContext applicationContext; //IOC容器对象
- 根据name获取bean:
Object getBean(String name)
- 根据类型获取bean:
T getBean(Class<T>requiredType)
- 根据name获取bean(带类型转换)
<T> T getBean(String name,Class<T> requiredType)
【2】bean作用域
注意事项:
- 可以通过 @Scope 注解来进行配置作用域:
- 默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
- prototype的bean,每一次使用该bean的时候都会创建一个新的实例。
- 实际开发当中,绝大部分的Bean是单例的,也就是说绝大部分Bean不需要配置scope属性。
【3】第三方bean
- 如果要管理的bean对象来自于第三方(不是自定义的),是无法用
@Component
及衍生注解声明bean的,就需要用到@Bean
注解 - 若要管理的第三方bean对象,建议对这些bean进行集中分类配置,可以通过
@Configuration
注解声明一个配置类。
- 通过
@Bean
注解的name/value属性指定bean名称,如果未指定,默认是方法名
注意事项
- 通过@Bean注解的name或value属性可以声明bean的名称,如果不指定,默认bean的名称就是方法名
- 如果第三方bean需要依赖其它bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配