需要帮助,问题在哪里?
我有一个配置类,它将属性加载为
WebConfig.java
@Configuration
@PropertySource(value={"classpath:application.properties"})
class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
我有另一个配置类,我试图将属性用作
MyServerConfig.java
@Configuration
class MyServerConfig {
@Value("${server.url}")
private String url;
...
}
application.properties
server.url=http://localhost:8080/test/abc
但是得到:
java.lang.IllegalArgumentException:无法解析占位符' server.url'。
不知道这里缺少什么?有什么想法吗?
答案 0 :(得分:1)
在将使用某个属性的类中使用@PropertyScan
注释:
@Configuration
@PropertySource("classpath:application.properties")
class MyServerConfig {
@Value( "${server.url}" )
private String url;
}
答案 1 :(得分:0)
要获取@Value
变量的值,不需要以任何特殊方式配置application.properties
,因为始终会扫描此文件。因此,删除@PropertySource
注释和PropertySourcesPlaceholderConfigurer
bean。
如果您要添加其他.properties
个文件(例如constants.properties
,db-config.properties
),则会使用这些文件。
所以只需删除它们并尝试再次运行您的应用程序
非常重要:
确保扫描使用@Value
注释的类(如果您的BootApplication位于某个包而不是'main'包中,请添加正确的@SpringBootApplication(scanBasePackages = { "com.my.project" })
注释)。
确保您的application.properties
在您的课程
奖金如果您使用的是春季个人资料(例如:prod
,dev
),您还可以拥有application-prod.properties
和application-dev.properties
个文件将根据您正在运行的配置文件进行扫描和包含。