SpringBoot配置优先级和Bean管理

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作用域

SpringBoot配置优先级和Bean管理_第1张图片
注意事项

  • 可以通过 @Scope 注解来进行配置作用域:
  • 默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
  • prototype的bean,每一次使用该bean的时候都会创建一个新的实例。
  • 实际开发当中,绝大部分的Bean是单例的,也就是说绝大部分Bean不需要配置scope属性。

【3】第三方bean

  • 如果要管理的bean对象来自于第三方(不是自定义的),是无法用 @Component 及衍生注解声明bean的,就需要用到 @Bean注解
  • 若要管理的第三方bean对象,建议对这些bean进行集中分类配置,可以通过 @Configuration 注解声明一个配置类。
    SpringBoot配置优先级和Bean管理_第2张图片
  • 通过@Bean注解的name/value属性指定bean名称,如果未指定,默认是方法名

注意事项

  • 通过@Bean注解的name或value属性可以声明bean的名称,如果不指定,默认bean的名称就是方法名
  • 如果第三方bean需要依赖其它bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配

你可能感兴趣的:(JAVAWeb,spring,boot,java,后端,intellij-idea)