我试图通过:
private static ApplicationContext applicationContext;
@Autowired
public static void setApplicationContext(ApplicationContext applicationContext) {
AuditorTest.applicationContext = applicationContext;
}
但它并不像所有其他尝试那样有效。
如何自动装配静态ApplicationContext
?
答案 0 :(得分:3)
您无法在static
方法上自动装配spring bean。您已将其设为实例方法,并让它将值分配给static
变量(可以正常工作):
@Autowired
public void setApplicationContext(ApplicationContext applicationContext) {
AuditorTest.applicationContext = applicationContext;
}
但我不认为这是你想要的。我想您应该使用SpringJUnitRunner
和@ContextConfiguration
对测试类进行注释,然后您就可以在那里自动装配ApplicationContext
:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(...) // configuration location
public class TestClass {
@Autowired
private ApplicationContext context;
}
答案 1 :(得分:0)
可能你现在可能已经想出了一个解决方法。 可以帮助其他人。
我碰到了类似的问题。大多数spring框架选项 提供不允许ApplicationContext的静态访问。
解决方法很简单。使用创建自己的ApplicationContext ClassPathXmlApplicationContext使用bean配置但静态。
<code>
public class BaseTestCase {
static {
ApplicationContext context = new ClassPathXmlApplicationContext("test-config.xml");
// Do what you want to do with the context
// Probably store in static variable to access somewhere else
}
}
</code>