SpringBoot笔记(四)引入配置

引入xml文件配置

现在配置大多通过application.ymlapplication.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次序来允许对值进行覆盖,覆盖的优先级顺序如下:
1. Devtools全局设置主目录(~ /.spring-boot-devtools.properties 为活跃的)。
2. @TestPropertySource注解在Test。
3. @SpringBootTest#properties 注解在Test。
4. 命令行参数。
5. 从SPRING_APPLICATION_JSON属性(内联JSON嵌入在一个环境变量或系统属性)。
6. ServletConfig init参数。
7. ServletContext init参数。
8. JNDI属性java:comp/env。
9. Java系统属性(System.getProperties())。
10. 操作系统环境变量。
11. RandomValuePropertySource配置的random.*属性值
12. 打包在jar以外的application-{profile}.properties或application.yml配置文件
13. 打包在jar以内的application-{profile}.properties或application.yml配置文件
14. 打包在jar以外的application.properties或application.yml配置文件
15. 打包在jar以内的application.properties或application.yml配置文件
16. @configuration注解类上的@PropertySource。
17. 默认的属性(使用SpringApplication.setDefaultProperties指定)。

  • 通过命令行来修改默认参数,例如:
    启动命令:java -jar *.jar –name=”chengli”
    以上的意思是,将name值修改为:chengli
  • 通过命令行来设置加载properties 例如:
    java -jar *.jar –spring.profiles.active=dev

application.properties文件按优先级,优先级高的会覆盖优先级低的

优先级顺序如下:
1. 当前目录下的一个/config子目录
2. 当前目录
3. 一个classpath下的/config包
4. classpath根目录

猜你喜欢

转载自blog.csdn.net/lftaoyuan/article/details/80065642