新的ClassPathXmlApplicationContext()创建新的bean集

时间:2014-12-16 09:41:33

标签: java spring

以下列方式加载应用程序上下文是否意味着除了ContextLoader创建的上下文之外还要创建另一个上下文?

我要求为非bean类加载应用程序上下文。

private static ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
            "channel-integration-context.xml");

根据我的观察,它似乎创建了另一个bean上下文。如果是这样,那么什么是更好的解决方法。

请帮忙。

1 个答案:

答案 0 :(得分:1)

除非有一些非常特殊的原因,否则通常没有必要创建多个ApplicationContext

您可以创建一个单身人士:

public class ApplicationContextWrapper {
    private static ApplicationContext INSTANCE = null;

    private ApplicationContextWrapper() {

    }

    public static ApplicationContext getIntance() {
        if (INSTANCE == null) {
            //note you can add more Spring XML configuration filenames in this array
            String[] contexts = new String[] {"channel-integration-context.xml"};
            INSTANCE = new ClassPathApplicationContext(contexts);
        }
        return INSTANCE;
    }
}

您可以将其用于:

private static ApplicationContext applicationContext = ApplicationContextWrapper.getInstance();