Spring Boot读取properties配置文件中的数据
程序员文章站
2022-04-30 11:11:46
...
题记:
整理一下springboot获取配置文件的笔记!springboot获取配置文件的方式分为三种:
1,使用@Value获取配置文件内容
2,使用@ConfigurationProperties获取配置文件内容
3,使用Environment对象
一、使用@Value获取配置文件内容
application.properties:配置文件代码:
server.port=11111
info.address=USA
info.company=Spring
info.degree=high
application.message=Hello World
PropertiesConfig1实体:
package top.wj.springboot.config;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PropertiesConfig1 {
@Value("${info.address}")
private String address;
@Value("${info.company}")
private String company;
@Value("${info.degree}")
private String degree;
}
测试类:
/**
* 注意:如果@Value${}所包含的键名在application.properties配置文件中不存在的话,会抛出异常:
* org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configBeanValue': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'demo.name' in value "${demo.name}"
*/
@Autowired
private PropertiesConfig1 propertiesConfig1;
@GetMapping("/test1")
@ApiOperation(value = "使用@Value获取配置文件内容")
public void test1() {
// PropertiesConfig propertiesConfig = new PropertiesConfig();
System.out.println(propertiesConfig1);
}
二、使用@ConfigurationProperties获取配置文件内容
PropertiesConfig2实体:
package top.wj.springboot.config;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @Component 表示将该类标识为Bean
* @ConfigurationProperties(prefix = "demo")用于绑定属性,其中prefix表示所绑定的属性的前缀。
* @PropertySource(value = "config.properties")表示配置文件路径。默认配置文件可以不指定
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "info")
public class PropertiesConfig2 {
private String address;
private String company;
private String degree;
}
测试类:
在实际项目中,当项目需要注入的变量值很多时,上述所述的两种方法工作量会变得比较大,这时候我们通常使用基于类型安全的配置方式,将properties属性和一个Bean关联在一起,即使用注解@ConfigurationProperties读取配置文件数据。
/**
* 在实际项目中,当项目需要注入的变量值很多时,上述所述的两种方法工作量会变得比较大,这时候我们通常使用基于类型安全的配置方式,将properties属性和一个Bean关联在一起,即使用注解@ConfigurationProperties读取配置文件数据。
*/
@Autowired
private PropertiesConfig2 propertiesConfig2;
@GetMapping("/test2")
@ApiOperation(value = "使用@ConfigurationProperties获取配置文件内容")
public void test2() {
System.out.println(propertiesConfig2);
}
三、使用Environment对象
使用Environment不用创建实体,可直接根据配置文件中需要获取的属性前缀获取。
测试代码
@Autowired
private Environment environment;
@GetMapping("/test3")
@ApiOperation(value = "获取environment")
public void test3() {
System.out.println(environment.getProperty("info.address"));
}
推荐阅读
-
spring boot配置文件application.properties配置JPA以及数据源
-
spring boot中关于获取配置文件注解的使用@ConfigurationProperties、@Value、@PropertySource
-
Spring Boot读取yml或者properties配置数据
-
Spring boot中Spring-Data-JPA操作MySQL数据库时遇到的错误(一)
-
Spring3.x版本+maven多模块读取配置文件properties一直是null的坑
-
spring boot 读取resources下文件 和 打成jar 读取jar包中配置文件
-
spring boot中关于获取配置文件注解的使用@ConfigurationProperties、@Value、@PropertySource
-
Spring boot的配置文件:properties文件中文乱码问题
-
Spring Boot——读取.properties配置文件解决方案
-
spring boot初体验之将配置文件中的属性和bean关联起来