以下例子代码在github中,代码链接
一、加载配置文件值
在springboot项目中,配置值可以通过两种方式来设置,一种是配置值写在properties文件中,另一种是写在yaml中。
(1)配置值写在properties文件中,读取properties配置值有两种方式,一种是写一个配置类,另一种是注入Environment类来获取。
default.properties配置值如下:
image.png
- 写一个配置类读取
@Configuration
@PropertySource(value = {"default.properties"})
@Data
public class DefaultPropertiesConfig {
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
}
- 注入Environment类读取
@Autowired
private Environment environment;
environment.getProperty("name")+":"+environment.getProperty("age")
(2)配置值写在yaml文件中,可以通过写配置类来读取配置值,也可以通过@Value注解来直接读取字段
image.png
# yaml配置文件
default:
student:
name: lisi
age: 19
- 写一个配置类读取
@Configuration
@ConfigurationProperties(prefix = "default.student")
@Data
public class DefaultYamlConfig {
private String name;
private Integer age;
}
- 通过@Value注解
@Value("${default.student.name}")
private String name;
@Value("${default.student.age}")
private int age;
以上三种方式读取配置文件配置值,实现类读取的代码如下:
@Service
public class DemoServiceImpl implements DemoService {
@Autowired
private DefaultPropertiesConfig defaultConfig;
@Autowired
private Environment environment;
@Autowired
private DefaultYamlConfig defaultYamlConfig;
@Value("${default.student.name}")
private String name;
@Value("${default.student.age}")
private int age;
@Override
public String properties1() {
return defaultConfig.getName() + ":" + defaultConfig.getAge();
}
@Override
public String properties2() {
return environment.getProperty("name")+":"+environment.getProperty("age");
}
@Override
public String properties3() {
return defaultYamlConfig.getName() + ":" + defaultYamlConfig.getAge();
}
@Override
public String properties4() {
return name + ":" + age;
}
}
二、环境化配置profile
通常默认配置文件是application.yaml,可以通过application-dev.yaml、application-prod.yaml文件来指定不同环境不同配置文件。
- 方式一,在application.yaml里面指定不同环境不同配置文件
spring.profiles.active:dev
spring.profiles.active:prod
- 方式二,启动项目时通过命令行传参
java -jar xxx.jar --spring.config.name=appilcation-dev
java -jar xxx.jar --spring.profile.active="dev"
网友评论