1、您应该使用a, ApplicationContext 除非您有充分的理由不这样做, GenericApplicationContext并将其子类 AnnotationConfigApplicationContext 作为自定义引导的常见实现。这些是Spring用于所有常见目的的核心容器的主要入口点:加载配置文件,触发类路径扫描,以编程方式注册bean定义和带注释的类,以及(从5.0开始)注册功能bean定义。

3、对于许多扩展容器功能,例如注释处理和AOP代理, BeanPostProcessor 扩展点是必不可少的。如果仅使用普通 DefaultListableBeanFactory 处理器,则默认情况下不会检测到并激活此类后处理器。这种情况可能令人困惑,因为您的bean配置实际上没有任何问题。相反,在这种情况下,容器需要通过额外的设置完全自举。

5、要使用a显式注册bean后处理器 DefaultListableBeanFactory ,您需要以编程方式调用addBeanPostProcessor ,如以下示例所示:

7、在这两种情况下,显式注册步骤都不方便,这就是为什么各种 ApplicationContext 变体优于DefaultListableBeanFactory Spring支持的应用程序中的普通模式 ,尤其是在典型企业设置中依赖于 BeanFactoryPostProcessor 和 BeanPostProcessor 扩展容器功能的实例时。
