🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Spring Boot允许您外部化配置,以便您可以在不同的环境中使用相同的应用程序代码。 您可以使用properties 文件,YAML文件,环境变量和命令行参数来外部化配置。 可以使用`@Value`注解将属性值直接注入到bean中,通过Spring的`Environment`抽象访问,或者通过`@ConfigurationProperties`绑定到结构化对象。 Spring Boot使用一个非常特殊的`PropertySource`排序,旨在允许合理地覆盖值。 按以下顺序考虑属性: 1. 开启devtools情况下,目录文件`~/.spring-boot-devtools.properties`的全局设置 2. `@TestPropertySource`注解,在测试场景下 3. `@SpringBootTest#properties `注解,在测试场景下 4. 命令行参数 5. `SPRING_APPLICATION_JSON`中的属性(嵌入在环境变量或系统属性中的内联JSON)。 6. ServletConfig 的初始化参数 7. ServletContext 的初始化参数 8. JNDI 属性,来自`java:comp/env` 9. java系统属性`System.getProperties()` 10. 操作系统环境变量 11. `random.*`开头的`RandomValuePropertySource` 12. 打包外部的`application-{profile}.properties` 13. 打包内部的`application-{profile}.properties` 14. 打包外部的`application.properties` 15. 打包内部的`application.properties` 16. `@Configuration`注解类里面的`@PropertySource` 17. `SpringApplication.setDefaultProperties`spring boot 的默认值 下面是一个具体实例,假设你开发一个`@Component`,使用了`name`属性, ~~~java import org.springframework.stereotype.*; import org.springframework.beans.factory.annotation.*; @Component public class MyBean { @Value("${name}") private String name; // ... } ~~~ 在应用程序类路径上(例如,在jar中),您可以拥有一个`application.properties`文件,该文件为`name`提供合理的默认属性值。 在新环境中运行时,可以在jar外部提供覆盖名称的`application.properties`文件。 对于一次性测试,您可以使用特定的命令行切换(例如,`java -jar app.jar --name =“Spring”`)。