我正在使用ConfigurationProperties批注将一些值从application.yml映射到java类。与localhost配置文件一起使用时,一切正常,但是当我从云配置中获取配置时,找不到这些值。我想问题可能在于配置文件名称可能会有所不同,具体取决于所选择的配置,而spring不知道在哪个文件中查找它们。
@Configuration
@ConfigurationProperties(prefix = "some.prefix")
public class SomeMappedConfigClass {
private String variable1;
private String variable2;
}
和具有配置的yaml
some.prefix:
variable1: abc
variable2: xyz
我试图通过PropertySource注释映射配置文件,但是它期望配置文件名在我看来可能有所不同。
@PropertySource("classpath:some-application.yml")
是否有任何方法可以传递给PropertySource当前加载的配置,而不管配置文件名如何? 成功从云配置中获取以下日志后收到的日志:应用程序:Web服务器配置文件:LOCAL
Located property source: CompositePropertySource {name='configService', propertySources=[MapPropertySource {name='file:central-config/web-server-LOCAL.yml'}]}
答案 0 :(得分:1)
您可以在类路径中使用外部配置。使用以下命令通过配置
-Dspring.config.location=your/config/dir/
或
-Dspring.config.location=classpath:prop1.properties,classpath:prop2.properties
使用下面的代码获取属性值。您可以使用任何一种方法
@Configuration
public class AppConfig {
@Value("${config.properties:<default values>}")
String propvalue;
@Autowired
Environment env;
public void method(){
String datapath = env.getProperty("data.path")
}
}