0

Java Springを使用して、プロパティプレースホルダーのデフォルトの動作を上書きして、任意のプロパティに対して「foo」を返すにはどうすればよいですか?

私が下っていく現在のパスは、PropertySourceを次のように拡張することです。

public class FooPropertySource extends PropertySource<Object> {
    private static final String DEFAULT_NAME = "foo";

    public FooPropertySource() {
        super(DEFAULT_NAME, null);
    }

    @Override
    public Object getProperty(String name) {
        return "foo";
    }
}

この時点で、2つの質問があります。

A)アプリケーションのコンテキストXMLファイルをどうすればよいですか?今のところ、私はこれをBeanと定義しています...それだけです。

B)FooPropertySourceを使用するように、アプリケーションコンテキストから他のBeanをロードするために、コードで何かを行う必要がありますか?

ありがとう

4

1 に答える 1

0

アプリケーションコンテキストに追加するには、このPropertySourceを登録する必要があります。アプリケーションコンテキストを手動で起動する場合は、次のことができます。

    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext();
    ctx.setConfigLocation("applicationContext.xml");
    ctx.getEnvironment().getPropertySources().addLast(new FooPropertySource());
    ctx.refresh();

Web環境でこれを行う場合は、カスタムApplicationContextInitializerを登録して、PropertySourceに挿入するために更新される前に、アプリケーションコンテキストをインターセプトする必要があります。

public class CustomInitializer implements ApplicationContextInitializer<ConfigurableWebApplicationContext> {
    public void initialize(ConfigurableWebApplicationContext ctx) {
        ctx.getEnvironment().getPropertySources().addLast(new FooPropertySource());
    }
}

詳細はこちら

于 2012-09-11T19:59:16.047 に答える