读取默认配置文件
配置文件(application.properties
):可以是 yml 也可以是 properties 格式,properties 不支持map、数组等,yml 可以
spring.profiles.active: dev
server.port: 18080
读取
@Component
public class Test {
@Value("spring.profiles.active")
private String profile;
@Value("server.port")
private int port;
// 指定默认值,如果配置文件不存在配置项,也不指定默认值,启动会报错
@Value("application.name:myApplication")
private String applicationName;
}
读取指定配置文件
配置文件
# 文件名称叫 db.properties
db.host: 192.168.1.1
db.port: 3306
db.username: root
db.password: 123456
读取
// classpath: 表示当前工程 resource 目录(application.yml 的默认目录)
// classpath*: 当前工程和所有 jar 的 resource 目录(读取 jar 里面的配置文件)
// classpath:conf/db.properties:resource 的下级 conf 目录
@PropertySource("classpath:db.properties")
@Component
public class DbConfig {
@Value("db.host")
private String host;
@Value("db.port")
private String port;
@Value("db.username")
private String username;
@Value("db.password")
private String password;
}
映射 java 类
配置文件(application.yml
)
person:
id: 1
name: Milk
bobby: [吃饭, 睡觉, 打豆豆]
family: [father, mother]
map: {k1: v1, k2:v2}
pet: {type: dog, name: 旺财} # 会根据 Pet 类自动映射
映射的 java 类
@ConfigurationProperties(prefix = "person") // 注解表示要映射属性,并指定前缀
public class Person {
// 匹配 person.id
private int id;
private String name;
// 匹配 person.hobby
private List<String> hobby;
private String[] family;
private Map map;
private Pet pet; // 需要创建一个 Pet 类
}
开启配置
@EnableConfigurationProperties(Person.class) // 开启对应配置类(写在哪都可以)
@SpringBootApplication
public class App{
public static void main(String[] args){
SpringApplication.run(App.class, args)
}
}
不开启配置(不写 @EnableConfigurationProperties(Person.class)
)在 Person 上加 @Component
也能生效,两者二选一即可
如果想在写配置项的时候根据配置类进行提示,要加下面这个依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
标签:读取,配置文件,db,Value,private,class,String
From: https://www.cnblogs.com/cyrushuang/p/18469823