我有一个像这样的项目设置:
-common-lib (common lib to included by multiple services)
-event-lib (spring framework 4 (read IOC) library for our event buffer. I want to embed the prod configuration within the app so consumers can use it without configuring it.
-serviceA (depends on event-lib, springboot application)
-serviceB (depends on event-lib, spring framework application)
我一直在努力研究如何以Java注释的方式管理配置。
在下面的示例中(作为spring framework 4项目在事件库中运行):
我无法获得PropertySource以兑现环境的spring.profiles.active
即使-Dspring.profiles.active =" dev"环境也不会设置有效的配置文件。被指定)
@Configuration
@ComponentScan(basePackages = "com.*")
@PropertySource("classpath:events-{$spring.profiles.active}.properties")
public class EventConfiguration {
@Inject
private ConfigurableApplicationContext ctx;
@Inject
private Environment environment;
@Value("${events.asset-processing-queue}")
private String assetProcessingEventQueue;
}
对我来说没有多大意义,因为可以同时激活多个配置文件(引用文件的方法取决于只有1个活动集)。
理想情况下,我试图找到一个解决方案:
答案 0 :(得分:1)
以下是我们如何做到的:
@PropertySource("classpath:/${env}.config.properties")
public class Application implements RequestHandler<Request, Object> {
@Override
public Object handleRequest(Request request, Context awsContext) {
ExecutionEnvironment env = getEnvironment(awsContext.getFunctionName());
System.setProperty("env", env.toString());
这尊重环境属性。