如何将 StaticListableBeanFactory 与 ClassPathXmlApplicationContext 连接?

Aar*_*lla 5 java junit spring unit-testing

在我的测试用例的设置中,我有以下代码:

    ApplicationContext context = new ClassPathXmlApplicationContext(
            "spring/common.xml"
    );
    StaticListableBeanFactory testBeanFactory = new StaticListableBeanFactory();
Run Code Online (Sandbox Code Playgroud)

我如何以这样一种方式连接这两者,即测试可以testBeanFactory在安装过程中注册 bean ,而应用程序的其余部分使用它们而不是在common.xml

注意:我需要混合静态(common.xml)和动态配置。我不能为后者使用 XML,因为这意味着要编写 > 1000 个 XML 文件。

axt*_*avt 4

您可以使用ConfigurableListableBeanFactory.registerSingleton()代替StaticListableBeanFactory.addBean()

ApplicationContext context = new ClassPathXmlApplicationContext(
            "spring/common.xml" 
    ); 

GenericApplicationContext child = new GenericApplicationContext(context);

child.getBeanFactory().registerSingleton("foo", ...);
Run Code Online (Sandbox Code Playgroud)