Spring BeanFactoryAware和ApplicationContextAware有什么区别?

时间:2010-01-08 11:23:47

标签: java spring

两者都可用于获取bean实例,但哪一个更适合用于实现?

3 个答案:

答案 0 :(得分:29)

如果您需要BeanFactory的引用,请使用BeanFactoryAware。如果您需要ApplicationContext的引用,请使用ApplicationContextAware

请注意,ApplicationContext接口是BeanFactory的子类,并在基本BeanFactory接口之上提供其他方法。

如果你需要做的只是致电getBean(),那么BeanFactory就足够了。

另请注意,Spring 2.5+提供了一种更好的方式来使用BeanFactoryApplicationContext连接自己,例如

private @Autowired ApplicationContext appContext;
private @Autowired BeanFactory beanFactory;

不需要XyzAware接口。

答案 1 :(得分:4)

ApplicationContextBeanFactory的扩展版本,因此提供了其他功能。

因此,是否使用ApplicationContextAwareBeanFactoryAware归结为以下问题:您是否明确需要任何其他ApplicationContext功能?如果您实施ApplicationContextAware,则坚持BeanFactoryAware

答案 2 :(得分:2)

您是否需要访问ApplicationContext上提供的其他功能?如果是这样,那么你当然应该使用 ApplicationContextAware 。如果没有, BeanFactoryAware 就足够了。

在许多其他事情中,ApplicationContext还有其他检查bean的方法,例如 containsBeanDefinition getBeanDefinitionCount getBeanDefinitionNames getBeanNamesForType getBeansOfType 可能对您有用哪些在 BeanFactory

上不可用

我通常实现ApplicationContextAware