我正在将ApplicationContext用作Spring容器.
但是,由于我不想更改我的API,因此我觉得需要使用容器的多个实例,如下所示-
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
...
objA = context.getBean(...);
objB = context.getBean(...);
}
// code for Class A
public void execute() // <-- cannot change this signature
{
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
objC = context.getBean(...); // earlier,this was objC = new C();
objC.method1("...");
}
因此,我最终使用了两个不同的ApplicationContext实例.什么时候具有多个ApplicationContext实例合适,什么时候不合适?
最佳答案
如果您可以控制这些类,请尝试实现ApplicationContextAware:
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/ApplicationContextAware.html
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/ApplicationContextAware.html
这会将applicationContext注入到类中,从而使您可以自由获取所需的任何类.
只要A类是在春季之前初始化的,它将起作用.从给出的代码来看就是这种情况.