Beanを構築するため@Configuration
のプロパティが必要なSpring3.1があります。foo
プロパティはで定義されていますが、アプリケーションにアクティブなSpringプロファイルがある場合はdefaults.properties
、のプロパティで上書きされる可能性があります。overrides.properties
override
オーバーライドがないと、コードは次のようになり、機能します...
@Configuration
@PropertySource("classpath:defaults.properties")
public class MyConfiguration {
@Autowired
private Environment environment;
@Bean
public Bean bean() {
...
// this.environment.getRequiredProperty("foo");
...
}
}
@PropertySource
をclasspath:overrides.properties
条件にをお願いし@Profile("overrides")
ます。これをどのように達成できるかについて誰かが何か考えを持っていますか?私が検討したいくつかのオプションは重複しています@Configuration
が、それはDRYまたはプログラムによる操作に違反しますが、呼び出しがどこに行くConfigurableEnvironment
のかわかりません。environment.getPropertySources.addFirst()
以下をXML構成に配置すると、プロパティを直接挿入した場合は機能しますが、メソッド@Value
を使用した場合は機能しません。Environment
getRequiredProperty()
<context:property-placeholder ignore-unresolvable="true" location="classpath:defaults.properties"/>
<beans profile="overrides">
<context:property-placeholder ignore-unresolvable="true" order="0"
location="classpath:overrides.properties"/>
</beans>
アップデート
今これを行おうとしている場合は、Spring BootのYAMLサポート、特に「プロパティの代わりにYAMLを使用する」セクションを確認してください。そこでのプロファイルサポートはこの質問を無意味にしますが、@PropertySource
まだサポートはありません。