首页IT科技spring依赖注入作用(如何理解spring框架中的依赖注入和控制反转?)

spring依赖注入作用(如何理解spring框架中的依赖注入和控制反转?)

时间2025-06-13 16:13:28分类IT科技浏览3847
导读:ioc,Inversion of Control(控制反转 ,是Spring中的一种设计思想而非技术。...

ioc            ,Inversion of Control(控制反转)                  ,是Spring中的一种设计思想而非技术            。

我们可以从4个方面理解ioc:

谁控制谁? ——Ioc容器控制对象                  。

控制了什么? ——Ioc容器控制了获取对象及其外部资源      。

为什么是反转? ——传统的javaSE技术是手动new对象的      ,通过new的对象直接控制资源的(相当于“正转            ”);而spring是使用Ioc容器创建对象并获取外部资源         ,相当于通过第三方查询获取(相当于“反转                  ”)         。即:传统技术是主动创建对象                  ,而ioc思想是被动接受依赖对象                  。

怎么实现反转的?——通过依赖注入(DI)的方式实现反转(这里的反转即:获取对象的方式)         。

DI         ,Dependency Injection(依赖注入)      ,是将容器动态地注解到应用程序中      。

简单地说                  ,DI是通过注解的方式获取到对象以及一些外部资源                  。

DI和ioc其实是一个东西            ,只是理解的层面不同            。通俗地说   ,ioc层面理解就是:获取对象的方式不再是我们主动创建寻找                  ,而是多了个‘中介’去帮我们查询对象并寻找   。DI层面理解就是:写代码的时候               ,要用到某个对象及资源,我们不再需要去查询那个对象在哪里               ,并且new对象                  ,我们只需要配置好就可以直接通过@获取我们需要的资源                  。

耦合和内聚

值得一提的是   ,ioc思想由于通过第三方ioc容器创建对象            ,能够减少代码的耦合性                  ,从而使得代码更优               。

看到这里也许有些人开始蒙了      ,为啥低耦合代码更优?这样一句话你或许听过:“我们写代码都要尽量向低耦合高内聚靠近!      ”这说明         ,低耦合高内聚的代码更好                  ,你只需要知道这一点就够了。至于它们的理解         ,请继续往下看:

耦合和内聚都是评判软件程序优劣的一个标准               。

理解耦合

耦合指的是元素与元素之间的连接关系            、依赖程度等                  。

举个例子      ,在类1引用类2的变量                  ,我们需要new 类2的对象            ,这个时候类1和类2产生了一种依赖性:假如类2发生了改变或者消失   ,类1就会出现问题(报错)   。类1与类2的这种关系                  ,就是一种耦合               ,因为它们之间有一种依赖性            。

上述只有两个类作比较,看不出什么               ,但是如果很多个类之间相互引用(也就是“高耦合         ”)                  ,创建其他类的对象   ,如果其中一些类做了修改或其他什么            ,想象一下                  ,会报多少错?查询起来会多麻烦?工作效率是不是大打折扣了?

所以      ,低耦合的代码会更优                  。

有的人可能会问         ,那为什么ioc思想相对传统JavaSE技术就是低耦合的?

ioc思想是通过Ioc容器创建对象                  ,相当于通过第三方查询对象并获取外部资源         ,是没有直接建立联系的      ,因此也就不存在高耦合的问题                  ,注解之后资源就自动引入了      。

理解内聚

内聚通常指的是功能内聚            ,即程序之间的共同性         。

用一句俗语解释:术业有专攻                  。各行各业   ,只需要管属于他们行业范围内的事情就可以了         。内聚也是这个意思      。

举个例子                  ,我要写一个心理测试系统               ,那么主要功能就是心理测试                  。我写的所有代码如果都是心理测试核心代码,那么就是100%内聚               ,也就是超高内聚了                  ,当然只是举个例子便于理解哈            。

高内聚就是要我们写的代码尽可能相关   ,也就是所有程序尽可能围绕某个具体的功能点            ,这样程序更具体                  ,也更便于管理   。

声明:本站所有文章      ,如无特殊说明或标注         ,均为本站原创发布                  。任何个人或组织                  ,在未征得本站同意时         ,禁止复制                  、盗用      、采集         、发布本站内容到任何网站                  、书籍等各类媒体平台               。如若本站内容侵犯了原著者的合法权益      ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
phpcms 用的是什么模板引擎(phpcms 1064错误的解决办法) seo的技术包括哪些内容(seo的技术包括哪些方面)