如何在 Spring Boot 中访问 application.properties 文件中定义的值
作者:迹忆客
最近更新:2023/02/01
浏览次数:
在Spring Boot 开发中,有时候我们想访问 application.properties
中提供的值,例如:
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
logging.file=${HOME}/application.log
userBucket.path=${HOME}/bucket
假如我想在 Spring Boot 应用程序的主程序中访问 userBucket.path
。
最常用的有以下三种方式
第一、使用 @Value 注解
我们可以使用 @Value
注解并访问正在使用的任何 Spring bean 中的属性
@Value("${userBucket.path}")
private String userBucketPath;
根据以往的经验,在某些情况下可能无法获取该值或将其设置为 null。 例如,当我们尝试在 preConstruct() 方法或 init() 方法中设置它时。 发生这种情况是因为值注入发生在类完全构造之后。 这就是为什么最好使用第三个方式的原因。
第二、使用 @PropertySource 注解
@PropertySource("classpath:application.properties")
// env 是环境变量
env.getProperty(configKey);
- 加载类时,PropertySouce 在环境变量(在我们的类中)中设置属性源文件中的值。 因此,我们可以轻松获取。
- 可通过系统环境变量访问。
第三、使用 @ConfigurationProperties 注解
- 这主要在 Spring 项目中用于加载配置属性。
- 它基于属性数据初始化实体。
- @ConfigurationProperties 标识要加载的属性文件。
- @Configuration 根据配置文件变量创建一个 bean。
@ConfigurationProperties(prefix = "user")
@Configuration("UserData")
class user {
//Property & their getter / setter
}
@Autowired
private UserData userData;
userData.getPropertyName();