Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringJUnit4 ClassRunner定制BeanFactory?_Java_Spring - Fatal编程技术网

Java 使用SpringJUnit4 ClassRunner定制BeanFactory?

Java 使用SpringJUnit4 ClassRunner定制BeanFactory?,java,spring,Java,Spring,通过创建缓存bean工厂,最终解决了这个问题 我真的希望能够使用这样一个CachingByTypeBeanFactory和SpringJUnit4ClassRunner来运行带有@Autowired的JUnit测试。但似乎不可能通过ContextLoader更改应用程序上下文上的Bean工厂 还有其他方法吗?创建自己的ContextLoader并将此注释附加到JUnit类: @ContextConfiguration(loader=YourLoader.class) 这是我的示例加载程序,它实

通过创建缓存bean工厂,最终解决了这个问题

我真的希望能够使用这样一个CachingByTypeBeanFactory和SpringJUnit4ClassRunner来运行带有@Autowired的JUnit测试。但似乎不可能通过ContextLoader更改应用程序上下文上的Bean工厂


还有其他方法吗?

创建自己的ContextLoader并将此注释附加到JUnit类:

@ContextConfiguration(loader=YourLoader.class)
这是我的示例加载程序,它实例化了另一个或自定义ApplicationContext,然后可以使用自定义BeanFactory(取决于功能)对其进行初始化:

}

在上述情况下,应用程序上下文(由Spring Framework提供)具有构造函数:

public GenericWebApplicationContext(DefaultListableBeanFactory beanFactory) {
    super(beanFactory);
}

这到底有什么帮助?我一直在阅读ContextLoader的spring源代码,但我似乎无法让它接受我的BeanFactory。和AFIK ContextLoader!=BeanFactory您使用的是什么应用程序上下文类型?您可以使用新BF实例化GenericaApplicationContext,然后使用自定义加载程序的loadContext方法返回它。ContextLoader是指定如何将字符串数组转换为应用程序上下文的接口。
public GenericWebApplicationContext(DefaultListableBeanFactory beanFactory) {
    super(beanFactory);
}