Springboot常用的配置相关注解

文章目录

    • 一、常用配置注解:
      • @Configuration注解
      • @Import注解
      • @Conditional注解
      • @ConfigurationProperties
      • @EnableConfigurationProperties
    • 二、自动加载注解
      • @SpringBootConfiguration
      • @EnableAutoConfiguration注解开启自动配置

一、常用配置注解:

@Configuration注解

@Configuration用于声明一个配置组件。

  • 注意点 :proxyBeanMethods 属性,默认为true,该配置类会被代理(CGLIB),当设置为true时在同一个配置文件中调用其它被@Bean注解标注的方法获取对象时会直接从IOC容器之中获取,反之会new一个新对象;

@Import注解

声明在一个类上,指定一个类数组,这些类将会被调用无参构造方法从而注册为组件,默认组件名称为全类名

@Conditional注解

声明在类或者方法上,指只有在定义在@Conditional的条件符合的情况下才会加载这个组件或bean,不符合不进行加载

@ConfigurationProperties

用于给组件提供配置文件的属性,springboot将根据配置自动将属性注入到组件属性中,前提是当前作用的范围必须是组件,例如和@Component和@Bean一起搭配使用

@EnableConfigurationProperties

用于指定声明了ConfigurationProperties的类,springboot会向这些类注入属性并将这些类注册为组件

二、自动加载注解

springboot启动类只有一个@SpringBootApplication注解,@SpringBootApplication主要包含如下两个注解

@SpringBootConfiguration

  • 这个注解包含@Configuration注解,声明这个一个配置类,springboot启动会加载它

@EnableAutoConfiguration注解开启自动配置

  • @EnableAutoConfiguration注解中包含一个@AutoConfigurationPackage注解,@AutoConfigurationPackage包含一个@Import注解导入了一个AutoConfigurationPackages.Registrar.class的静态内部类,这个类会通过注解信息获取到当前注解所在的启动类的包路径

  • @EnableAutoConfiguration另一个@Import(AutoConfigurationImportSelector.class)导入一个AutoConfigurationImportSelector类,该类下的selectImports方法会通过读取spring-boot-autoconfigure jar包下的META-INF中的spring.factories文件中写死的所有的配置类路径进行加载,在读取了spring.factories的所有类加载时,通过@Conditional系列注解的条件判断结合大量的@EnableAutoConfiguration指向配置类,配置类再通过@ConfigurationProperties读取spring-boot-autoconfigure jar包下的additional-spring-configuration-metadata.json和spring-configuration-metadata.json默认配置信息从而初始化组件。通过上面的一系列逻辑,springboot真正做到按需加载。当然,如果我们想覆盖默认的配置,我们只需要直接使用@Bean定义一个相同的名称的组件即可。

你可能感兴趣的:(springboot,spring,boot,java,spring)