引入xml文件配置
现在配置大多通过application.yml
或application.properties
直接配置,我的项目没用到过xml。
不过在网上查到的,可以通过在入口启动类上加上
-
@ImportResource(value = { "路径" })
或者使用 @ImportResource(locations= { "路径" })
一样的效果,多个XML文件的话你可以用逗号“,”分隔,就这样轻而易举的引用XML配置。
引入多个@Configuration 配置类
在实际项目中可能不会把所有的配置都放在一个配置类(用@Configuration注解的类)中,可能会分开配置。
我们的项目中只是在每个微服务的swagger配置类中才注解
引用自定义properties
Spring Boot使用全局application.properties
提供了很多的默认的配置属性。
在开发的时候,大多数会用到自定义的一些配置属性,可以直接自定义引用名和变量。
当然,如果要改变某些默认值还是要用指定的引用。
这也是我们目前用的最多的方法,每个微服务的几乎所有配置都放在了properties中。
最常用的方法如下
//在properties中定义
ocrServiceHost=http://192.168.0.1:8080
//在代码中引用
@Value("${ocrServiceHost}")
private String ocrServiceHost;
也可以通过组合的方式来拼接
//在properties中定义
file.upload.path=D:/
//前缀
@Component
@ConfigurationProperties(prefix = "file.upload")
public class FileUploadProperties {
private String path;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
// 引用
fileUploadProperties.getPath();
外部化配置(配置方式与优先级)
这部分没测试过
Spring Boot 允许外化配置,Spring Boot使用了一个特别的PropertySource次序来允许对值进行覆盖,覆盖的优先级顺序如下:
- Devtools全局设置主目录(~ /.spring-boot-devtools.properties 为活跃的)。
- @TestPropertySource注解在Test。
- @SpringBootTest#properties 注解在Test。
- 命令行参数。
- 从SPRING_APPLICATION_JSON属性(内联JSON嵌入在一个环境变量或系统属性)。
- ServletConfig init参数。
- ServletContext init参数。
- JNDI属性java:comp/env。
- Java系统属性(System.getProperties())。
- 操作系统环境变量。
- RandomValuePropertySource配置的random.*属性值
- 打包在jar以外的application-{profile}.properties或application.yml配置文件
- 打包在jar以内的application-{profile}.properties或application.yml配置文件
- 打包在jar以外的application.properties或application.yml配置文件
- 打包在jar以内的application.properties或application.yml配置文件
- @configuration注解类上的@PropertySource。
- 默认的属性(使用SpringApplication.setDefaultProperties指定)。
- 通过命令行来修改默认参数,例如:
启动命令:java -jar *.jar --name="chengli"
以上的意思是,将name值修改为:chengli - 通过命令行来设置加载properties 例如:
java -jar *.jar --spring.profiles.active=dev
application.properties文件按优先级,优先级高的会覆盖优先级低的
优先级顺序如下:
- 当前目录下的一个/config子目录
- 当前目录
- 一个classpath下的/config包
- classpath根目录