欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 13:09:39
...

在思考这个问题之前应该需要知道什么是 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 java