1

ApplicationContextAware 相对于 Setter Injection 有什么优势。通过 Setter Injection 我们也可以从 Spring Container 中获取 bean。

4

4 回答 4

0

在大多数场景中,setter 注入就足够了,它提供了更好的解决方案,帮助您维护实例之间的关系。因为类不直接依赖于容器,也就是说它们是Pojos,不需要知道容器的存在,这会给单元测试和以后的迁移带来很多方便。

如果你真的需要从容器中取出一些东西,例如对某种 bean 进行一些增强,那么是时候使用 ApplicationContextAware 了。通常,不建议通过实现 ApplicationContextAware 在类中手动获取依赖关系,尤其是对于业务对象。他们不应该对自己的组装负责”。

于 2013-01-21T04:24:42.217 回答
0

随着ApplicationContextAware您获得对当前上下文的引用,您可以对其进行编辑,例如添加或删除 bean。通常这是一个坏主意,除非在某些测试场景中。

Spring 还强调,与ApplicationContextAware使用带有 setter 的简单 POJO 相比,您更依赖 Spring 框架。

于 2013-01-20T18:53:58.247 回答
0

ApplicationContextAware除非你真的需要它,否则你不应该使用它。如果您可以通过 setter/field/constructor 注入来支持您的所有业务需求,请不要使用ApplicationContextAware.

有些人可能会想用ApplicationContextAware它来获取原型作用域bean的新实例(实际上BeanFactoryAware就足够了)。但是有更好的工具,即lookup-method.

于 2013-01-20T18:59:57.180 回答
0

这是两种不同的模式。当您使用时,ApplicationContextAware您实现了服务定位器模式,但设置器注入指的是依赖注入模式。在开发低耦合应用程序时,后者更可取。

这两种模式之间的区别在此处此处进行了描述

于 2013-01-20T19:06:23.277 回答