Spring Boot 属性配置

Posted 否定之否定

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 属性配置相关的知识,希望对你有一定的参考价值。

属性的配置在项目中经常被使用到,Spring Boot 相对spring框架配置文件对属性进行配置简化了很多。

一:属性配置优先级

 

1.命令行参数
2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值
6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件
[email protected]注解类上的@PropertySource
11.通过SpringApplication.setDefaultProperties指定的默认属性

(1.1)命令行参数

通过java -jar myApp.jar --name="Spring Boot" --server.port=8081方式来传递参数。命令行参数在myApp.jar 后面设置。

(1.2)J2EE 上下文环境变量

(1.3)java系统变量

java -Dname="ws" -jar myApp.jar,设置name属性为ws

如果设置java -Dname="ws" -jar app.jar --name="Boot"   由于命令行参数优先级高,则name属性为Boot

(1.4)操作系统环境变量

操作系统环境变量如安装JAVA和MAVEN时配置的JAVA_HOME,MAVEN_HOME等,这些都是操作系统的环境变量。

(1.5)随机值

# 随机字符串
com.ws.blog.value=${random.value}
# 随机int
com.ws.blog.number=${random.int}
# 随机long
com.ws.blog.bignumber=${random.long}
# 10以内的随机数
com.ws.blog.test1=${random.int(10)}
# 10-20的随机数
com.ws.blog.test2=${random.int[10,20]}

(1.6)@PropertySource

这个注解可以指定具体的属性配置文

 

二:application.properties文件加载顺序

1. 当前路径下的/config子目录。
2. 当前路径。
3. classpath路径下的/config子路径。
4. classpath路径

 

三:配置属性类

(3.1) 采用@Value("${XXX}")配置

 1 @Configuration
 2 public class MyConfig {
 3     @Value("${ws.name}")
 4     private String name;
 5     @Value("${ws.age}")
 6     private Integer age;
 7 
 8     public String getName() {
 9         return name;
10     }
11 
12     public void setName(String name) {
13         this.name = name;
14     }
15 
16     public Integer getAge() {
17         return age;
18     }
19 
20     public void setAge(Integer age) {
21         this.age = age;
22     }
23 }

(3.2)采用@ConfigurationProperties 配置

首先在pom中添加如下依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

application.properties文件中添加如下配置

#My Config
[email protected]
ws.age=18
ws.listAddress[0]=add1
ws.listAddress[1]=add2

配置MyConfig类

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;

@Configuration
@ConfigurationProperties(prefix = "ws")
public class MyConfig {

    private String name;

    private Integer age;

    private List<String> listAddress;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public List<String> getListAddress() {
        return listAddress;
    }

    public void setListAddress(List<String> listAddress) {
        this.listAddress = listAddress;
    }
}

 

以上是关于Spring Boot 属性配置的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 属性配置和使用(转)

Spring Boot 属性配置和使用

Spring Boot 属性配置和使用

Spring boot:thymeleaf 没有正确渲染片段

Spring boot 将配置文件属性注入到一个bean中

spring boot 读取配置文件的方式