spring 中 pojo 类为什么不需要注入

在思考这个问题之前应该需要知道什么是 IOC 和 DI 。在《Spring5 高级编程》中是这样介绍它们之间的关系的:

IOC 的核心是
DI,旨在提供一种更简单的机制来设置组件依赖项(通常称为对象的协作者),并在整个生命周期中管理这些依赖项。需要某些依赖项的组件通常称为对象,或者在
IOC 的情况下被称为目标对象。通常,IOC 可以分解为两种子类型:依赖注入和依赖查找。这些子类型被进一步分解为 IOC 服务的具体实现。
通过这个定义可以清楚的看到, 当谈论 DI 时,通常是在谈论 IOC,而当谈论 IOC 时,则并不总是在谈论 DI(例如,依赖查找也是
IOC 的一种形式)。

当然,IOC 的概念众说纷纭,因为它太抽象了,而我们只需要理解其中一种概念就足够了。o( ̄▽ ̄)d

回到问题本身,spring 中 pojo 类为什么不需要注入?

首先我们需要知道使用 IOC 的意义在哪,能够满足 OCP(开闭原则,对扩展开放,对修改关闭)

在实际开发中用户的需求是不断变化的,而为了满足用户需求变化的同时不改变原有代码就需要引入 IOC 。

举个例子:现有一个接口 ArticleService ,一个使用 Oracle 数据库的实现类 articleServiceImpl 。现在用户需求变更要求使用 MySQL 数据库,那么怎么解决呢?新建一个使用 MySQL 数据库的实现类 articleServiceImpl2 即可。

对于 service 层类需要注入我们都知道了,那么 pojo 类呢?

什么是 pojo 类?通常就是实体类,有时也会对其封装成 VO 。实体类代表一种实际存在或者依托介质存在的东西,它并不是抽象的。比如 文章,电脑,汽车等等,这些实体类会因为用户的需求变更而改变吗?答案是肯定不会变化。用户需求再怎么变更也改变不了一篇文章,一辆汽车的本质,顶多加一些时间、类型、品牌这些属性。而这些并不考虑在业务的变化范围内,所以并不需用使用 IOC 。

最后就有了我们平时写业务逻辑的代码:

   @Resource
   private ArticleService articleService; //注入

   public void hello(){
     Article article = new Article();    //不需要注入
   }

ヾ( ̄▽ ̄)Bye~~Bye~

个人博客:spring 中 pojo 类为什么不需要注入

你可能感兴趣的:(spring 中 pojo 类为什么不需要注入)