用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. MyBatis 实现新增

    MyBatis实现新增 1.概念学习:(角度不同) 1.1 功能:从应用程序角度出发,软件具有哪些功能 1.2 业务:完成功能时的逻辑,对应Service中一个方法 1.3 事务:从数据库角度出发,完 ...

  2. 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)

    传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...

  3. 交换机的Access口与Trunk口

    基本概念 Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口:Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口: 处理流程 ...

  4. auto和decltype(c++11)

    1.auto 1)auto是一个类型说明符(类型说明符就是像int.double这样的),用来定义一个变量,它可以让编译器去分析表达式的类型,并使用该表达式的值去初始化变量 //auto定义的变量必须 ...

  5. 第19章:MongoDB-聚合操作--聚合管道--$limit+$skip

    ①$limit “$limit”:负责数据的取出个数: “$skip”:数据的跨过个数. ②范例:使用“$limit”设置取出的个数

  6. 20155205 《Java程序设计》实验四 Android程序设计

    20155205 <Java程序设计>实验四 Android程序设计 一.实验内容及步骤 (一) Android Stuidio的安装测试 参考<Java和Android开发学习指南 ...

  7. 屏幕抓取程序 (位图DDB的例子)

    屏幕抓取程序的意思是将整个屏幕图显示在应用程序的用户区中,等价于截图.对桌面窗口的操作:首先得知道桌面窗口的宽和高,获取宽和高需要利用窗口的设备句柄,而获取设备句柄需要知道窗口句柄,这一系列的连串关系 ...

  8. 1033 To Fill or Not to Fill

    PAT A 1033 To Fill or Not to Fill With highways available, driving a car from Hangzhou to any other ...

  9. 1.gil全局解释器锁, 2. 死锁与递归锁 3. 信号量 4. Event事件 5. 线程queue

    gil本质就是一把互斥锁,相当于执行权限,每个进程都会存在一把gil,同一进程内的多个线程必须抢到gil 之后才能使用cpython解释器来执行自己的代码,同一进程下的多线程不能并行,但可以实现并发 ...

  10. 关于Lambda

    1. 查询时,包含关联子对象.如: 数据库中包含表Father和Son,映射实体如下: public class Father { public string Name{get;set;} publi ...