【发布时间】:2013-12-25 12:36:08
【问题描述】:
我有一个关于 Spring Injection 的问题。
基础教程告诉我们应该创建一个上下文来获取 bean:
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
但是,如果我在每个类中创建一个上下文,我可以从这些上下文中获取的 bean 包含不同的实例。例如
public class MyClass1 {
public void myMethod() {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
MyBean myBean1 = (MyBean)context.getBean("myBean");
}
}
public class MyClass2 {
public void myMethod() {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
MyBean myBean2 = (MyBean)context.getBean("myBean");
}
}
这里,myBean1 和 myBean2 是两个不同的对象,虽然它应该是一个单例。
使用上下文的正确方法是什么,这样我可以保证我只创建一个上下文,整个系统都使用它来获取 bean?
有没有办法像 Google Guice 一样使用 Spring,它使用注解来解决依赖注入问题?
非常感谢。
【问题讨论】:
-
可以通过spring注解来实现。参考这个docs.spring.io/spring/docs/1.2.9/reference/beans.html
标签: java spring guice code-injection