我正在使用
目前,我使用Maven配置文件和Ant任务来为运行时环境创建正确的属性文件。也就是说,我让Maven将“prod.properties”或“dev.properties”移动到构建时类所使用的“application.properties”。我想要做的是使用Spring配置文件来消除这个步骤。我希望能够做到以下几点:
我也希望能够不使用任何XML来设置配置文件。因此,我需要根据系统属性的存在设置配置文件。例如:
AbstractAnnotationConfigDispatcherServletInitializer
来配置我的Web应用程序。我还有一个@Configuration
类,用于创建一些bean。在这个类中,我使用@PropertySource
注释来加载属性文件以获取各种设置(例如数据库连接详细信息)。目前,我使用Maven配置文件和Ant任务来为运行时环境创建正确的属性文件。也就是说,我让Maven将“prod.properties”或“dev.properties”移动到构建时类所使用的“application.properties”。我想要做的是使用Spring配置文件来消除这个步骤。我希望能够做到以下几点:
@PropertySource( value = "classpath:/application-${spring.profiles.active}.properties")
我也希望能够不使用任何XML来设置配置文件。因此,我需要根据系统属性的存在设置配置文件。例如:
String currentEnvironment = systemProperties.getProperty("current.environment");
if (currentEnvironment == null) {
((ConfigurableEnvironment)context.getEnvironment()).setActiveProfiles("production");
} else {
((ConfigurableEnvironment)context.getEnvironment()).setActiveProfiles(currentEnvironment);
}
我不确定在哪里可以做到这一点。根据一个相关问题的答案,这可以在我的初始化类中覆盖createRootApplicationContext
方法来完成。但是,该答案还依赖于在设置配置文件之前加载配置类。
我想做的是否可能?如果是,怎么做?
[spring-3]
标签wiki摘要表示它适用于Spring的所有3.x版本,包括3.2。新功能不是必须在此处严格要求新标签的东西,因为它们不会破坏足够多的东西。 (还要记住主要版本标签的问题计数--少于600。分裂是不好的。) - CharlescreateRootApplicationContext
中,配置类被注册,但上下文尚未刷新。 - Sotirios Delimanolis