spring boot 学习(配置文件)

此文做记录交流,如有不当,还望指正。

application.properties文件

SpringBoot项目系统的默认配置文件名为application.properties或者application.yml
配置文件可以放在以下4个位置,并具有优先顺序
1,在相对于应用程序运行目录的/congfig子目录里。
2,在应用程序运行的目录里
3,在config包内
4,在Classpath根目录

src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性,如下图

image.png

我们可以在application.properties修改SpringBoot的默认配置

server.port=8000  #修改启动端口号
server.name=helloword #项目名称

当然也可以自定义属性

my.sex=1
my.name=张三
my.age=55

具体配置可参考
SpringBoot application.properties全部配置一
SpringBoot application.properties全部配置二

程序中读取配置文件的几种方式

@Value("${my.sex}") 注解方式读取 代码如下

package com.demo.springboot_helloword.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class PropertiesUtil {
    @Value("${my.age}")
    private int age;
    @Value("${my.name}")
    private String name;
    @Value("${my.sex}")
    private int sex;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
}

@ConfigurationProperties(prefix = "my")注解方式把配置文件中的属性赋值给实体bean 代码如下

package com.demo.springboot_helloword.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="my")
public class PropertiesUtil {
    private int age;
    private String name;
    private int sex;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
}

读取自定义的配置文件。在resource下面创建my.properties

package com.demo.springboot_helloword.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource("classpath:my.properties")
@ConfigurationProperties(prefix="my")
public class PropertiesUtil {
    private int age;
    private String name;
    private int sex;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
    
}

application.properties中的参数互相引用及使用随机数

my.secret=${random.value}
my.bignumber=${random.long}
my.number.in.range=${random.int[1024,65536]}
my.age=${random.int(10)}
my.name=zhangsan
my.describe=我的名字叫${my.name},我今年${my.age}岁了

多个环境的配置文件

在我们开发和测试及线上生产环境中所对应的配置往往是不同的,我们就需要在不同的地方使用不同的文件,假设我们在resources下面创建以下三个文件

application-test1.properties:测试环境 其中配置 server.port=8000
application-test2.properties:开发环境 其中配置 server.port=8001
application-test3.properties:生产环境 其中配置 server.port=8002

然后在application.properties中添加
spring.profiles.active=test1
启动项目测试,我们会发现项目启动后端口为8000
spring.profiles.active=${activestart:test1}
上面的写法表示如果我们给传递 activestart 参数值 则spring.profiles.active的值为我们传递的值,否则默认为test1
项目在启动的时候传递参数
java -jar xxx.jar --activestart=test2
项目就以application-test2.properties为配置启动了

推荐阅读更多精彩内容