SpringBoot中如何正确获取自定义配置文件的值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计754个文字,预计阅读时间需要4分钟。
在开发过程中,我们经常需要自定义一些属性值,如第三方服务地址、图片服务器地址、常量值等。本章将介绍如何获取这些自定义属性的值。
在`application-dev.yml`文件中,我们可以通过以下方式自定义属性:
yaml自定义属性示例third-party-service-url: http://example.comimage-service-url: http://images.example.comconstant-value: 123
获取自定义属性值的方法如下:
java// 获取第三方服务地址String thirdPartyServiceUrl=environment.getProperty(third-party-service-url);
// 获取图片服务器地址String imageServiceUrl=environment.getProperty(image-service-url);
// 获取常量值int constantValue=Integer.parseInt(environment.getProperty(constant-value));
以上代码演示了如何从`application-dev.yml`文件中获取自定义属性值。在实际项目中,您可以根据需要修改属性名称和值。
在开发过程中,我们常常会自定义一些属性值,比如第三方服务地址,图片服务器地址,常量值等等。这一章就整下如何获取自定义属性的值。
(这里接着上一章在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.启动后访问 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;
}
}
启动项目,访问 localhost:8088/dev/info
本文共计754个文字,预计阅读时间需要4分钟。
在开发过程中,我们经常需要自定义一些属性值,如第三方服务地址、图片服务器地址、常量值等。本章将介绍如何获取这些自定义属性的值。
在`application-dev.yml`文件中,我们可以通过以下方式自定义属性:
yaml自定义属性示例third-party-service-url: http://example.comimage-service-url: http://images.example.comconstant-value: 123
获取自定义属性值的方法如下:
java// 获取第三方服务地址String thirdPartyServiceUrl=environment.getProperty(third-party-service-url);
// 获取图片服务器地址String imageServiceUrl=environment.getProperty(image-service-url);
// 获取常量值int constantValue=Integer.parseInt(environment.getProperty(constant-value));
以上代码演示了如何从`application-dev.yml`文件中获取自定义属性值。在实际项目中,您可以根据需要修改属性名称和值。
在开发过程中,我们常常会自定义一些属性值,比如第三方服务地址,图片服务器地址,常量值等等。这一章就整下如何获取自定义属性的值。
(这里接着上一章在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.启动后访问 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;
}
}
启动项目,访问 localhost:8088/dev/info

