springboot之配置文件
2021-06-17 04:05
标签:out 结构 了解 err 占位符 允许 bigdata 配置文件 framework springboot在加载配置文件的时候是有先后顺序的,了解加载配置文件的先后顺序,可以减少编写程序出现错误 1 springboot加载配置文件的先后顺序如下: 启动的时候,1中的配置文件优先级最高,会覆盖2,3,4中的配置信息 2 工程结构如图: 代码如下:
*
* Created by on 2018/9/29.
配置文件如下 3、使用@Value("${property}")注解注入配置属性有时会比较麻烦,特别是需要使用多个properties,或数据本身有层次结构。Spring Boot提供一种使用配置的替代方法,这种方法允许强类型的beans以管理和校验应用的配置,代码如下: 属性名配置一般规则如下: 对于使用yml文件配置跟这里配置差不多,这里不再赘述,看个人喜好,有人喜好properties进行配置,有人喜好yml文件进行配置 springboot之配置文件 标签:out 结构 了解 err 占位符 允许 bigdata 配置文件 framework 原文地址:https://www.cnblogs.com/haizhilangzi/p/9722331.htmlSpringApplication
将从以下位置加载application.properties
文件,并把它们添加到Spring Environment
中:
/config
子目录。/config
包。package com.rookie.bigdata.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* springboot注入随机值
* my.secret=${random.value}
* my.number=${random.int}
* my.bignumber=${random.long}
* my.number.less.than.ten=${random.int(10)}
* my.number.in.range=${random.int[1024,65536]}
*
package com.rookie.bigdata.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
*
* springboot允许使用占位符进行配置
* Created by on 2018/9/29.
*/
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.description}")
private String appDesc;
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getAppDesc() {
return appDesc;
}
public void setAppDesc(String appDesc) {
this.appDesc = appDesc;
}
}
package com.rookie.bigdata;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 应用程序启动类
* Created by on 2018/8/2.
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication();
//通过设置该参数禁用命令行属性添加到Environment
// springApplication.setAddCommandLineProperties(false);
springApplication.run(Application.class, args);
}
}
package com.rookie.bigdata.config;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.*;
/**
* Created by liuxili on 2018/9/29.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class AppConfigTest {
@Autowired
AppConfig appConfig;
@Test
public void test1() {
System.out.println(appConfig.getAppName());
System.out.println(appConfig.getAppDesc());
}
}
package com.rookie.bigdata.config;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.*;
/**
* Created by liuxili on 2018/9/29.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class RandomConfigTest {
@Autowired
RandomConfig randomConfig;
@Test
public void test1(){
System.out.println(randomConfig.getSecret());
System.out.println(randomConfig.getNumber());
System.out.println(randomConfig.getNumberLess());
System.out.println(randomConfig.getNumberRange());
System.out.println(randomConfig.getName());
}
}
my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.number.less.than.ten=${random.int(10)}
#my.number.in.range=${random.int[1024,65536]}
name=lisi
#属性占位符
#当使用application.properties定义的属性时,Spring会先通过已经存在的Environment查找该属性,所以你可以引用事先定义的值
app.name=appStore
app.description=${app.name} is a Spring Boot application
connection.username=root
connection.password=roots
package com.rookie.bigdata.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* Created by liuxili on 2018/9/29.
*/
//@Component
@Configuration
@ConfigurationProperties(prefix = "connection")
public class ConnectionConfig {
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
package com.rookie.bigdata.config;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.*;
/**
* Created by liuxili on 2018/9/29.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class ConnectionConfigTest {
@Autowired
private ConnectionConfig connectionConfig;
@Test
public void test1(){
System.out.println(connectionConfig.getPassWord());
System.out.println(connectionConfig.getUserName());
}
}
属性
说明
person.firstName
标准驼峰规则
person.first-name
虚线表示,推荐用于
.properties
和.yml
文件中
person.first_name
下划线表示,用于
.properties
和.yml
文件的可选格式
PERSON_FIRST_NAME
大写形式,使用系统环境变量时推荐