An ApplicationContext is an extended version of a BeanFactory and therefore offers additional functionalities.
So whether to use ApplicationContextAware or BeanFactoryAware boils down to the question: Do you explicitely need any of the additional ApplicationContext functionalities? If you do implementApplicationContextAware otherwise stick to BeanFactoryAware.
Do you require access to the additional features available on an ApplicationContext? If so, then you should of course use ApplicationContextAware. If not, BeanFactoryAware will be sufficient.
Amongst many other things, an ApplicationContext has additional methods for inspecting the beans e.g.containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames,getBeanNamesForType, getBeansOfType that may be useful to you and which are not available onBeanFactory