此文做记录交流,如有不当,还望指正。
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中相同的属性,如下图
我们可以在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为配置启动了