一、springboot的常用注解

1. @Configuration注解相当于spring里面的一个xml配置文件bean.xml,一般注解在类的头上



<beans>
    
</beans>



  @Configuration注解的配置类有如下要求:@Configuration不可以是final类型;@Configuration不可以是匿名类;嵌套的configuration必须是静态类;

2.  @Bean 相当于在xml中配置了一个bean,一般标记在方法上



<bean id="" class=""></bean>



3. @Import 相当于在xml中添加如下:



<import resource=""/>



4.@SpringBootApplication注解:是springboot应用的主程序标志,是一个组合的注解,包括如下两个个注解:@ComponentScan、@EnableConfiguration

  @ComponentScan注解:就是扫描所标注的类所在包下的所有需要注入的组件,将其注入应用中去。在ssm框架中的配置如下图

spring boot 注入为Null是什么 spring boot configuration 注入_配置文件

  @EnableConfiguration注解:自动装配。获取我们注解所在包下的组件去进行注册(@AutoConfigurationPackage);装配自动配置导入选择器(@Import({AutoConfigurationImportSelector.class}));

5. @Qualifier    当IOC容器里面有相同的多个对象时,可以使用@Qualifier来指定合格者[要取哪个一个对象]

6. @Validated  验证处理  @Value读取配置文件进行数据绑定 @ConfigurationProperties批量注入配置文件中的属性

7.@PropertySource用于不在application.properties或application.yml文件中写的相关配置

spring boot 注入为Null是什么 spring boot configuration 注入_java_02

 

 

 8.@ImportantResource 从上面所有的配置中可以看出我们没有使用以前的spring的xml的配置方法,如果还是要使用spring里面的xml的配置方式怎么办理,使用@ImportResource

9.@Component和@Bean区别:(参考:https://www.jianshu.com/p/3fbfbb843b63

1)@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean,@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。

 2)@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑,并且实例名就是方法名。

10. 配置文件加载的优先级

spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

其中同一目标下的properties文件的优先级大于yml文件

spring boot 注入为Null是什么 spring boot configuration 注入_配置文件_03

 

 

 

以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。

SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。

我们可以从ConfigFileApplicationListener这类便可看出,其中DEFAULT_SEARCH_LOCATIONS属性设置了加载的目录:

spring boot 注入为Null是什么 spring boot configuration 注入_spring_04

11.外部配置文件加载

使用配置文件的路径我们也可以通过配置spring.config.location来改变默认配置。

spring boot 注入为Null是什么 spring boot configuration 注入_配置文件_05

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置。

指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。

使用命令行参数。所有的配置都可以在命令行上进行指定;多个配置用空格分开; –配置项=值

spring boot 注入为Null是什么 spring boot configuration 注入_加载_06

 

 

使用命令行参数