
文章插图
前言在现今Spring boot 流行年代,相信大部人都非常喜欢Spring boot简洁而非常有效的配置,让我们从庞大xml配置解放出来,让每个框架都需要手动配置集成的劳动中解放出来 。这一切都是spring Boot基于约定优于配置的思想,大量的减少了配置文件的使用 。
@SpringBootApplication注解一个简单的@SpringBootApplication注解可以试下这那三个功能:
- @EnableAutoConfiguration: 启动Spring boot 的自动化配置机制
- @ComponentScan : 在程序所在的包下面启用组件扫描
- @Configuration: 允许在上下文中注册额外的bean或导入其他配置类
【Spring boot 配置类与配置文件详解】导入配置类
我们不需要将所有@configuration放到一个类中 。@import注解可用于导入其他配置类 。或者,您可以使用@components can自动扫描所有Spring组件,包括@configuration类 。
@SpringBootApplication@Import({LinkConfig.class, ConnectionPoolConfig.class, HttpConfig.class, CuratorConfig.class, GlobalConfig.class})public class ExampleController 导入xml配置
如果你一定要使用基于xml的配置,建议仍然从@configuration类开始 。然后可以使用@ImportResource注解加载XML配置文件
SpringBootApplication@ImportResource("classpath:*.xml")public class ExampleController 自动配置
Spring Boot自动配置功能会尝试根据你添加的JAR依赖项自动配置您的Spring应用程序 。例如,如果hsqldb在你的类路径上,并且你没有手动配置任何数据库连接bean,那么spring boot会自动为你配置一个内存数据库 。
你只需要选择自动配置,方法是将@EnableAutoconfiguration或@SpringBootApplication注释添加到您的@configuration类中 。
注意:你应该只添加一个@SpringBootApplication或@EnableAutoconfiguration注解 。我们通常建议您只向主要@configuration类添加一个注解(主要configuration 是带main方法的启动类)自动化配置是非侵入式的,在任何一个点上,你可以定义你自己的配置去替换 auto-configuration 引入的配置 。例如,你添加了自己的数据源配置,则auto-configuration 带进来的数据配置将会无效 。
禁用部分自动配置类
如果你发现一些不想应用的特定自动配置类,可以使用@EnableAutoconfiguration的exclude属性禁用它们,如下例所示:
@Configuration@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})public class ExampleController Spring boot 的配置文件Spring boot允许将配置外部化,以便应用程序代码在不同的环境中使用不同的配置 。可以使用properties文件、yaml文件、环境变量和命令行参数来外部化配置 。属性值可以通过使用@value注解直接注入bean,通过Spring的环境抽象访问,或者通过@ConfigurationProperties绑定到结构化对象 。
Spring Boot使用一个非常特殊的属性源顺序,这样设计是为了个这些配置一个优先级,以便于进行的合理覆盖 。属性按以下顺序:
- 主目录上的devtools全局设置属性(~/.spring-boot-devtools.properties,当devtools处于活动状态时)
- @TestPropertySource 注解在你的测试代码上
- @SpringBootTest 注解上的属性值在测试代码上,测试应用程序特殊部分的测试注解
- 命令行参数
- 来自于SPRING_APPLICATION_JSON 的参数属性值,(嵌入在环境变量或系统属性中的内联JSON)
- ServletConfig 初始化的参数
- ServletContext 初始化参数
- 来自 java:comp/env 的JNDI 属性值
- Java System 的属性(System.getProperties())
- 系统环境变量
- 仅在RandomValuePropertySource*中具有属性的RandomValuePropertySource 。
- 在打包的JAR之外配置特定的Profile-specific.properties(application-{profile}.properties 和yaml 文件)
- 在打包的JAR里面配置特定的Profile-specific.properties(application-{profile}.properties 或yaml 文件)
- 在打包的JAR之外的 application.properties或yaml 文件
- 在打包的JAR里面的 application properties(application.properties 或yaml 文件)
- @PropertySource注解在你的 @Configuration 配置类上
推荐阅读
- Android开发:build.gradle 配置指南
- 微服务网关除了zuul、spring cloud gateway还有更出色的
- Java新手如何学习Spring、Struts、Hibernate三大框架?
- H3C交换机如何配置?如何一步步的创建vlan?
- 七个开源的 Spring Boot 前后端分离项目,建议收藏加转载
- 3个Spring Boot项目调优的方式
- centos安装nodejs并配置生产环境,基于pm2
- 10行配置就能实现微服务框架的API访问限流
- 如何在Linux中配置Redis服务并设置为开机自启
- 如何在 iOS 设备上配置 hosts
