我一直在努力寻找更好的做法。在Spring中,我的很多类都需要从XmlBeanFactory加载bean(对象)。所以我将以下几行放入我的大部分课程中
private static XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("config.xml"))
然后有人发布我应该让我的类实现BeanFactoryAware,它将给它们bean工厂的实例,所以你可以直接调用BeanFactory.getBean(..)方法之一......
我在类中实现BeanFactoryAware但现在我正在
java.lang.NullPointerException
当我尝试从我的对象访问工厂时。我错过了什么? Spring如何知道要使用的beanFactory?
答案 0 :(得分:1)
实现BeanFactoryAware
的对象应该是bean本身才能注入bean工厂。它是作为bean处理的一部分完成的。
注入的Bean工厂将实例化实现BeanFactoryAware
的bean。
答案 1 :(得分:1)
这是错误的,并且与Spring的整个观点相矛盾。如果在需要它的每个对象中创建一个新的bean-factory,那么还将创建spring config(和注释)中定义的所有bean的新实例。
Spring的重点是创建一个 bean工厂,并通过bean声明和连线创建整个对象图。我建议你看一些Spring教程,或者如果你周围有其他人对Spring有更多的经验,请他们给你一个介绍。