0

私はそれらを見たので、これは1000回尋ねられたと確信していますが、何かが欠けています.

環境:

<beans profile="localDev">
    <util:properties id="propertiesLocalDev"location="classpath:/localDev.properties"/>
</beans>

<beans profile="test">
    <util:properties id="properties-test" location="classpath:/test.properties"/>
</beans>

初期化:

    System.setProperty("spring.profiles.active", "localDev");
    GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
    ctx.load("classpath:applicationContext.xml");
    ctx.refresh();

構成:

@Configuration
public class AppConfig {


@Value("${test.value}")
private String testValue;
...

ログ:

INFO: Loading properties file from class path resource [localDev.properties]

プロパティ:

test.value=ugh

そのため、プロパティが読み取られているようですが、 AppConfig.testValue の値が設定されていません。私は純粋なJava Java/xmlなどを試しました...いくつかの構成はいくつかの作業を中断し、@PropertySourceを使用しようとしましたが、定数はtestValueが設定されないため、根本的に何か間違っています。

全体的な目標は、さまざまなプロファイルに応じてさまざまなプロパティ ファイルをロードすることです。

誰かが私が間違っていることを見ることができますか? ありがとう

4

3 に答える 3

0

プロパティを解決できるPropertySourcesPlaceholderConfigurerも必要です。これは以下を使用して構成されます。

<context:property-placeholder location="..." 
                local-override="true" properties-ref="propertiesLocalDev" />

これにより、プロパティ値がきれいに解決されるはずです。

これも機能するはずです-Spring-ELを使用:

@Value("#{@propertiesLocalDev['test.value']}")
private String testValue;
于 2013-04-16T13:44:44.730 に答える
0

試す

public class AppConfig {

 @Autowired
private String testValue;

}

変数が適切に自動配線されている場合は、使用できます

String sUgh = testValue.getProperty("test.value"); // = "ugh"

私もプレーンを使用します

<util:properties id="propertiesLocalDev"location="classpath:/localDev.properties"/>

を使用する代わりに

<beans profile> 

鬼ごっこ。

于 2013-04-16T13:46:02.537 に答える