用spring做了几个项目后发现,对spring的IOC理解还是不够清晰,今天就来总结下自己的理解(个人的一些见解)

  以前用jsp+servlet做网站时,只是分了显示层(jsp),控制层(servlet),和数据模型层,很传统的MVC三层架构,各层之间的耦合我

就不说了(感觉就是一锅粥...)。

  后来学了spring+hibernate开发网站,有多出来了一个服务层(service),不过一直都是拿它来调用dao层的,并没有感觉它有什么用

(原谅我是一个彩笔...),所谓的业务逻辑也放在了控制层(controller)里完成了 ==!。不过各层之间耦合度明显降低了(哈哈哈,因为用了

spring啊...)。以前用jsp+servlet时,想用哪个层的哪个对象直接new就好了,哪管那么多了。现在不一样了,spring是个好东西啊,IOC和AOP

可以说就是spring的核心功能了,当然,spring的强大可不止这点。今天我要总结的是spring的IOC容器管理bean。service层要调用dao层,Controller

层要调用service层,这层与层之间的调用可不是直接new出来就好了,首先你要面向接口开发,面向接口开发配合spring的IOC可以显著降低各层之间的

耦合度,就拿Controller层调用service层来说吧,在controller层调用需要使用的service接口,构造方法或set方法注入,具体调用哪个service实现类这

个就不归controller管了,spring负责为这个controller注入具体调用的实现类,默认情况下spring管理的bean是单例的,在IOC容器内只会创建一个bean

对象,各个controller层调用的当然也就是这一个bean对象了,不过这个看需求,可以配置为多例。这样controller控制层就不会与service服务层产生过多

耦合,因为controller要用到的具体service对象是由spring创建的,spring管理了注入依赖关系的过程,而controller调用的只是service接口,这样他们之

间的耦合是不是降到了最低。

  上面一直在说“耦合”,那到底什么是所谓的耦合呢。我所理解的耦合就是层与层之间的关系过于紧密,例如controller层想要调用一个service层的具体对象,

可以在controller层直接new不就得了,然后controller层还需要service层的另一个具体对象,那它再new一个,反正想要用哪个就new哪个,也很方便,功能

一样可以实现,还不需要定义那么多接口,管理那么多的实现关系。当然,这在开发小项目在开发过程中是没问题的,但是,小项目后期也是要维护的啊,你一个

controller层new了那么多service层的具体实现类,怎么想要扩展功能,修改需求,那改动可不是一般的大啊,修改bug也很烦有木有,就像打地鼠一样,这个bug

改完又会出现别的bug,真的很烦啊。这就是耦合过高的缘故。

spring IOC理解的更多相关文章

  1. spring ioc 理解

    springIOC 作用 springIOC 是sprig的特性.称作控制反转.将对象的创建,初始化,销毁,交给spring容器管理. 原理 在spring容器启动的时候,通过反射的方式,主动加载(或 ...

  2. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  3. 谈谈对Spring IOC的理解(转)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  4. 谈谈对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  5. 轻松理解spring IOC

    spring IOC(Inversion of control)即控制反转 概念:一,spring框架的核心之一 二,控制权由对象本身转向容器:由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 ...

  6. Spring系列之谈谈对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IOC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  7. 谈谈对Spring IOC的理解【转】

    学习过Spring框架的人 一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大 ...

  8. spring ioc DI 理解

    下面是我从网上找来的一些大牛对spring ioc和DI的理解,希望也能让你对Spring ioc和DI的设计思想有更进一步的认识. 一.分享Iteye的开涛对Ioc的精彩讲解 Ioc—Inversi ...

  9. Spring IOC的理解

            学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理 ...

随机推荐

  1. Vue.directive基础,在Vue模块开发中使用

    这是从网上找到的一个案例,由于网上的案例有坑,所以我在这里从新上传一次! 首先在main.js里引入两个自定义指令 import {focus, drag} from './components/da ...

  2. 7个鲜为人知却超实用的PHP函数--转(柒捌玖零)

    PHP有许多内置函数,其中大多数函数都被程序员广泛使用.但也有一些函数隐藏在角落,本文将向大家介绍7个鲜为人知,但用处非常大的函数. 没用过的程序员不妨过来看看. 1.highlight_string ...

  3. 多分类评价指标python代码

    from sklearn.metrics import precision_score,recall_score print (precision_score(y_true, y_scores,ave ...

  4. vueJs的简单入门以及基础语法

    1-1基本数据绑定 <div id="app"> {{ msg }} </div> //script new Vue({ el:"#app&quo ...

  5. mysql mybatis useGeneratedKeys Field 'ID' doesn't have a default value的问题

    原因是:创建表时没有让id自动增长: CREATE TABLE `STORAGE_VIRTUAL` ( `ID` ) NOT NULL AUTO_INCREMENT, `STORAGE_ID` ) N ...

  6. VIP之Clipper

    裁剪器II提供方法从视频流中选择有效区域并丢弃剩余部分. 指定有效区域的方式是从到边界的偏移量,或者给出有效区左上角的像素坐标和有效区的宽及高度. 裁剪器IP核通过读取Avalon-ST视频流中的控制 ...

  7. Nios II——定制自己的IP1之Nios接口类型

    信号自动识别的接口前缀 接口前缀 接口类型 asi Avalon-ST宿端口(输入) aso Avalon-ST源端口(输出) avm Avalon-MM主端口 avs Avalon-MM从端口 ax ...

  8. Effective C++ 随笔(2)

    条款5 了解c++默默编写并调用哪些函数 编译器自动生成的copy 构造函数,copy赋值操作符,析构函数,构造函数,这些都是public和inline的,此处inline的意思是他们的定义都是在头文 ...

  9. Jquery获取选中的文本值

    $(document).ready(function() { $(".contenttext").mouseup(function(e) { var txt; var parent ...

  10. C#版ObjectId

    近来在准备弄一个开源的HIS,但一周过去了几乎没有进度.就卡在ID如何生成.HIS的数据库压力大,如何多数据库支持,减轻压力一直想去实现.拿不准纯数字ID段还是GUID一类的文本ID.最终在mongo ...