SpringBoot 通过@ConfigurationProperties注解可以方便的将属性值注入到对象中,从而实现从配置文件读取值到对象中的功能。
以下是实现完整攻略:
- 在pom.xml文件中添加依赖:
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 在application.yml或application.properties中添加属性值
yml
my.config.name: MyConfigName
my.config.email: myemail@example.com
- 创建一个配置类,用@ConfigurationProperties注解标注,并用注解@PropertySource指定配置文件的位置。在类中定义属性,并提供setters和getters方法来访问和操作属性值。
```java
@Configuration
@PropertySource("classpath:application.yml")
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
```
- 在启动类中使用@EnableConfigurationProperties注解来启用配置类,从而注入属性值到对象中。
java
@SpringBootApplication
@EnableConfigurationProperties(MyConfig.class)
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
现在,我们可以在代码中通过MyConfig对象来访问配置文件中的属性值:
@RestController
public class MyController {
@Autowired
MyConfig myConfig;
@GetMapping("/config")
public String config() {
return "name: " + myConfig.getName() + ", email: " + myConfig.getEmail();
}
}
运行程序并访问配置文件中的属性值:
curl http://localhost:8080/config
输出:
name: MyConfigName, email: myemail@example.com
以下是更多示例:
假设配置文件中包含以下属性值:
my.config.map:
key1: value1
key2: value2
可以通过在配置类中增加一个Map来读取这些属性值:
@Configuration
@PropertySource("classpath:application.yml")
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
private Map<String, String> map;
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}
可以通过在控制器中输出map来验证:
@RestController
public class MyController {
@Autowired
MyConfig myConfig;
@GetMapping("/config")
public Map<String, String> config() {
return myConfig.getMap();
}
}
运行程序并访问配置文件中Map对象的属性值:
curl http://localhost:8080/config
输出:
{key1=value1, key2=value2}
假设配置文件中包含以下属性值:
my.config.list:
- item1
- item2
可以将属性值注入到一个List对象中:
@Configuration
@PropertySource("classpath:application.yml")
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
private List<String> list;
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}
可以通过在控制器中输出list来验证:
@RestController
public class MyController {
@Autowired
MyConfig myConfig;
@GetMapping("/config")
public List<String> config() {
return myConfig.getList();
}
}
运行程序并访问配置文件中List对象的属性值:
curl http://localhost:8080/config
输出:
[item1, item2]
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 如何从配置文件读取值到对象中 - Python技术站