实现BeanFactoryAware?它如何知道使用哪个beanFactory?

时间:2012-03-27 13:35:42

标签: java spring

我一直在努力寻找更好的做法。在Spring中,我的很多类都需要从XmlBeanFactory加载bean(对象)。所以我将以下几行放入我的大部分课程中

private static XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("config.xml"))

然后有人发布我应该让我的类实现BeanFactoryAware,它将给它们bean工厂的实例,所以你可以直接调用BeanFactory.getBean(..)方法之一......

我在类中实现BeanFactoryAware但现在我正在

java.lang.NullPointerException

当我尝试从我的对象访问工厂时。我错过了什么? Spring如何知道要使用的beanFactory?

2 个答案:

答案 0 :(得分:1)

实现BeanFactoryAware的对象应该是bean本身才能注入bean工厂。它是作为bean处理的一部分完成的。

注入的Bean工厂将实例化实现BeanFactoryAware的bean。

答案 1 :(得分:1)

这是错误的,并且与Spring的整个观点相矛盾。如果在需要它的每个对象中创建一个新的bean-factory,那么还将创建spring config(和注释)中定义的所有bean的新实例。

Spring的重点是创建一个 bean工厂,并通过bean声明和连线创建整个对象图。我建议你看一些Spring教程,或者如果你周围有其他人对Spring有更多的经验,请他们给你一个介绍。