在开发过程中,我们常常会自定义一些属性值,比如第三方服务地址,图片服务器地址,常量值等等。这一章就整下如何获取自定义属性的值。
(这里接着上一章在application-dev.yml中自定义属性。然后用结合profile配置获取自定义属性的值,当然也可以直接在application.xml中定义)
一,使用@Value
1.在application-dev.yml(application.yml)文件中定义自定义属性
编辑
编辑
2.在IndexController中定义变量(实际开发中一般是不会定义在启动类中的,这里单纯为了学习获取自定义属性的方法)
@Value("${PEOPLE.name}")private String name;
@Value("${PEOPLE.sex}")
private
3.写一个接口返回姓名性别
@RequestMapping("/info")@ResponseBody
public String getPeopleInfo(){
return name+":"+sex;
}
4.启动后访问 http://localhost:8088/dev/info
编辑
二,使用@ConfigurationProperties(prefix=" ")
当自定义属性较多时,我们就要写很多的@Value取值,鉴于此,springboot提供了ConfigurationProperties方便取值。
1.使用ConfigurationProperties需要引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
2.使用方法:①,在类头部使用@ConfigurationProperties(prefix=" ")注解
②,类文件中定义的变量需与applicaton文件中的变量保持一致,并生成geter/seter
③,规范变量开头
3.代码如下:
@Controller@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class})//自动配置
@ConfigurationProperties(prefix = "PEOPLE")
public class IndexContoller {
//入口
public static void main(String[] args) {
SpringApplication.run(IndexContoller.class,args);
}
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@RequestMapping("/info")
@ResponseBody
public String getPeopleInfo(){
return name+":"+sex;
}
}
启动项目,访问 http://localhost:8088/dev/info