浏览器网站入口,企业网站seo工作,制作图片软件英文,网站 建设需1、简介 本文介绍一些 springboot 配置管理相关的内容#xff0c;如何自定义配置#xff0c;导入配置#xff0c;配置绑定和基于 profiles 的配置。
2、springboot 配置管理
2.1、自定义配置类 在 spring 中使用 Configuration 注解定义配置类#xff0c;在 springboot 中… 1、简介 本文介绍一些 springboot 配置管理相关的内容如何自定义配置导入配置配置绑定和基于 profiles 的配置。
2、springboot 配置管理
2.1、自定义配置类 在 spring 中使用 Configuration 注解定义配置类在 springboot 中使用 SpringBootConfiguration 注解替换了 Configuration 注解。示例如下
//Configuration
SpringBootConfiguration
public class ConfigurationTest { Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}2.2、导入配置类 导入配置类通过 Import 注解导入如果配置类都在类扫描路径下就不用通过 Import 注解导入了如果不在默认类扫描的包下可以使用 ComponentScan 注解指定要扫描的包路径。
2.3、配置文件
2.3.1、配置文件格式
1、properties 类型的配置文件格式采用 keyvalue 形式。
2、yml / yaml 类型的文件采用 key: value 树状格式。yml 文件格式有以下两个说明 a、键key冒号后面需要添加一个空格 b、每个层级的缩进用两个空格。
2.3.2、配置绑定
1、properties 类型可以使用 PropertySource 和 Value 注解进行配置绑定。
2、yml 类型的配置文件不支持使用 PropertySource 注解进行配置绑定支持 ConfigurationProperties 注解进行属性配置。
注意
1、ConfigurationProperties 注解绑定参数需要用到类的 setter 方法然后在启动类上添加 EnableConfigurationProperties({**Properties.class}) 注解
2、ConfigurationProperties 可以放在类或者方法上在方法上与Bean联合使用此时就不用再在启动类上添加 EnableConfigurationProperties 注解在方法上就是给返回的 bean 对象进行参数绑定
3、ConfigurationProperties 注解绑定参数支持使用默认值如果配置文件中未指定则使用默认值。
// properties 文件的配置
Data
PropertySource(config/db.properties)
public class TestProperties {Value(${db.name})private String name;
}
// yml 文件配置
Data
ConfigurationProperties(prefix test.param)
public class TestProperties {private String name;private Integer age;
}// 启动类上添加EnableConfigurationProperties 将配置类导入容器
SpringBootApplication
Slf4j
EnableConfigurationProperties({TestProperties.class})
public class AutoConfigurationTestApplication {public static void main(String[] args) {SpringApplication.run(AutoConfigurationTestApplication.class, args);}
}
2.3.4、配置参数类扫描 ConfigurationProperties 注解需要与 EnableConfigurationProperties 注解结合使用这种方式有些繁杂可以在启动类上使用 ConfigurationPropertiesScan 注解就可以扫描所指定的包下的参数类在 basePackages 参数中指定具体的包即可。
SpringBootApplication
Slf4j
ConfigurationPropertiesScan(basePackages {})
public class AutoConfigurationTestApplication {public static void main(String[] args) {SpringApplication.run(AutoConfigurationTestApplication.class, args);}
}
2.3.5、配置验证 在进行参数绑定的时候可以进行参数验证保证绑定参数正常。引入以下依赖
dependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator/artifactId
/dependency 在绑定参数的实体类上可以使用对应的校验注解例如 NotNull .....。
2.3.6、多个配置文件的优先级 在 springboot 中使用的配置文件默认名称为application.properties / application.yml
1、项目直接启动
配置文件位置优先级项目根目录config文件夹下找配置文件根目录是指和src目录同级1项目根目录下找配置文件根目录是指和src目录同级2resources目录下找cofnig文件夹下找配置文件3resources目录下找配置文件4
注意
a、若同一个目录下有 .properties 文件和 yml 文件会优先使用 .properties 文件。
b、springboot 会按照四个位置全部加载配置文件如果高优先级的配置文件属性和低优先级的配置文件属性冲突会使用优先级高的使用第一次读到的如果不冲突则会共存互补。
2、使用外部配置文件启动使用 jar 包启动项目 springboot 打包时不会把项目根目录下的 ./config 和 ./ 这两级目录打包进去。这个设计很巧妙因为没有打包进来所以SpringBoot可以加载外部发配置文件。 springboot 支持把配置文件放在外部。只要把配置文件放在 jar 包的同级目录下或者放在同级下的config文件夹中springboot 都会去此处读取配置文件。 命令行启动中通过 --spring.config.location 参数指定配置文件的方式优先级最高如果使用指定参数的形式例如--server.port则使用此参数值。
注意以上通过加载外部配置文件后还会把 jar 包的 resources 目录下的配置也加载进来相同属性使用优先级最高的。
2.3.7、使用指定的 profile 配置文件 在上节中四个位置指定的配置文件可以在配置文件中指定生效的 profile相应的配置文件命名方式为application-${profile}.properties/yml。指定使用的 profile 使用配置spring.profiles.active*。 在加载配置文件的时候先加载不带 profile 的主配置文件再加载带 profile 的配置文件在主配置文件中使用 spring.profiles.active*指定使用哪个 profile 文件。
指定使用哪个 profile 的文件有以下几种方式 1、在主配置文件中指定使用 spring.profiles.active*。 2、在命令行参数中指定--spring.profiles.activetest。 3、虚拟机参数中指定-Dspring.profiles.activetest。
2.3.8、单配置文件配置多个 profile yml 文件中使用 --- 符号分隔properties 文件使用 #--- 符号分隔。需要注意以下几点 1、多个 profile 之间的分隔符不能有空格并且分隔符要连续。 2、分隔符前、后一行不能是注释行。 3、单配置文件配置多个 profile不能被 PropertySource 等注解加载。
以 yml 文件为例
spring:profiles:active: prod #指定需要切换的环境文件优先
---
spring:profiles: dev #指定属于哪个环境
---
spring:profiles: prod #指定属于哪个环境
2.3.9、指定 profile 加载对象 profile 不仅可以激活配置类还可以激活 java 对象使用 Profile 注解。
注意
1、在使用 Component 和 Configuration 注解时可以直接把 Profile 注解放到类上
2、用在 ConfigurationProperties 注解上如果使用包扫描的方式加载配置类可以直接使用 Profile 注解如果使用的是 EnableConfigurationProperties 需要将 Profile 注解用在 EnableConfigurationProperties 注解上。
3、总结 本文详细介绍 springboot 加载配置绑定配置指定 profile 配置等功能掌握 springboot 的配置使用对于深入了解自动配置原理有着巨大帮助。 本人是一个从小白自学计算机技术对运维、后端、各种中间件技术、大数据等有一定的学习心得想获取自学总结资料pdf版本或者希望共同学习关注微信公众号it自学社团。后台回复相应技术名称/技术点即可获得。本人学习宗旨学会了就要免费分享