需要帮助,问题出在哪里?
我有一个配置类,它将属性加载为
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;
...
}
应用程序属性
server.url=http://localhost:8080/test/abc
但是得到:
java.lang.IllegalArgumentException:无法解析占位符“server.url”。
不知道这里缺少什么?有什么想法吗?
在将使用某个属性的类中使用
@PropertyScan
注释:
@Configuration
@PropertyScan("classpath:application.properties")
class MyServerConfig {
@Value( "${server.url}" )
private String url;
}
要获取
@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
文件,这些文件将根据您运行的配置文件进行扫描和包含。