作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个包含存储在 Spring Boot 属性文件中的值的类
到目前为止,我已经设置了属性“source.Ip”的sample.properties 文件。
类如下:
@PropertySource({"classpath:sample.properties"})
@Configuration
@Component
public class PropertyLoader {
@Value("${source.Ip}")
private String sourceIp;
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
public String getSourceIP(){
return sourceIp;
}
}
属性文件直接位于 src/main/resources 下,这是一个源文件夹。
但是我得到了:
java.lang.IllegalArgumentException: Could not resolve placeholder 'source.Ip' in string value "${source.Ip}"
至于我的主类,它简单如下:
@Configuration
@EnableAutoConfiguration
public class AppStarter {
public static void main(String args[]){
System.out.println(SpringApplication.run(AppStarter.class, args).getBean(PropertyLoader.class).getSourceIP());
}
@Bean
public PropertyLoader propertyLoader(){
return new PropertyLoader();
}
}
sample.properties内容:
source.Ip=127.0.0.1
最佳答案
为了解决${...}
<bean>
中的占位符定义或@Value
使用 PropertySource
中的属性进行注释,您必须注册一个PropertySourcesPlaceholderConfigurer
。使用 <context:property-placeholder>
时会自动发生这种情况在XML
,但必须使用静态 @Bean
显式注册使用@Configuration
时的方法类。
该方法必须是静态的 PropertySourcesPlaceholderConfigurer
因为BeanFactoryPostProcessor (BFPP)
对象必须在容器生命周期的早期实例化,它们可能会干扰注释的处理,例如 @Autowired
, @Value
,和@PostConstruct
@Configuration
内类。
将其添加到您的应用程序类中应该可以解决问题:
@Bean
public static PropertySourcesPlaceholderConfigurer pspc() {
PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
return pspc;
}
来自PropertySource documentation .
编辑
你有没有尝试过
PropertySourcesPlaceholderConfigurer
在 AppStarter
类。PropertySource
AppStarter
的注释类。Configuration
PropertyLoader
上的注释.该问题可能与PropertyLoader
有关。是一个组件和一个配置类。
关于java - 在 Spring Boot 中加载 Spring 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562190/
我是一名优秀的程序员,十分优秀!