Springboot现在应该已经被大多数公司所使用了,尤其是其采用配置代替XML的形式简化了很多代码的编写,但是其到底拥有哪些配置项,还是需要花点时间好好看一下,所以我整理了一份Springboot的特性配置,希望对你有用。

@SpringBootApplication以及新注解

用过Springboot的肯定见过一个配置项@SpringBootApplication
也就是在启动项上必须添加的一个配置。

其实光这一配置项里就已经包含了很多配置项,如图所示:

spring boot社区 spring boot documentation_配置项

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
这三个都是元注解,所谓元注解就是给注解的注解。
Target 修饰Annotation所修饰的对象范围,Retention 修饰注解的生命的周期,Documented 说明这个注解会被 javadoc工具记录。由于这些一般都不会动它,就一带而过

  1. @SpringBootConfiguration
    @SpringBootConfiguration 是表明该类是一个配置类,可以看出它就是@Configuration的作用,只是它是属于Springboot的而@Configuration 是属于Spring。
  2. @EnableAutoConfiguration

就是因为其中有AutoConfigurationImportSelector这个类才可以实现将符合条件(因为autoconfigure中提供很多的条件加载Configuration,具体可以看下面)的所有用@Configuration修饰的都加载到当前IOC容器中。

spring boot社区 spring boot documentation_spring boot社区_02

spring boot社区 spring boot documentation_spring boot_03


org.springframework.boot.autoconfigure 下还提供了很多注解,当使用这个注解时只有满足各自的条件才会注册到容器中。

由于很多,但是并没有多用到,这里只说一些较为常用的或者是自己用过到的。

  • ConditionOnBean 是指容器中已经存在Bean才生效,ConditionOnMissBean 对应就是不存在生效
  • ConditionOnClass 是指classpath 存在该类的时候生效 ConditionOnMissClass 同样就是不存在的时候生效
  • ConditionOnExpression 是指SpEL表达式结果为true时生效
  • ConditionalOnProperty(name = “”, havingValue = “”) 里面的参数设置值一样时生效
  • ConditionalOnSingleCandidate 是指容器中存在一个该该类型的Bean生效

总结

以上都是个人日常学习的记录笔记,手敲不易,多多点赞。
也欢迎各位大牛的指点。