What's the difference between Spring BeanFactoryAware and ApplicationContextAware?
java, spring
Solution
If you need a reference to the `BeanFactory`, then use `BeanFactoryAware`. If you need a reference to the `ApplicationContext`, then use `ApplicationContextAware`.
Note that the `ApplicationContext` interface is a subclass of `BeanFactory`, and provides additional methods on top of the basic `BeanFactory` interface.
If all you need to do is call `getBean()`, then `BeanFactory` is sufficient.
Note also that Spring 2.5+ provides a nicer way of getting yourself wired with a `BeanFactory` or `ApplicationContext`, e.g.
private @Autowired ApplicationContext appContext;
private @Autowired BeanFactory beanFactory;
No need for the `XyzAware` interfaces.
Problem
Both can be used to get bean instance, but which one is better to be used to implement?