spring IOC理解
用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理解的更多相关文章
- spring ioc 理解
springIOC 作用 springIOC 是sprig的特性.称作控制反转.将对象的创建,初始化,销毁,交给spring容器管理. 原理 在spring容器启动的时候,通过反射的方式,主动加载(或 ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 谈谈对Spring IOC的理解(转)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 谈谈对Spring IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 轻松理解spring IOC
spring IOC(Inversion of control)即控制反转 概念:一,spring框架的核心之一 二,控制权由对象本身转向容器:由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 ...
- Spring系列之谈谈对Spring IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IOC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 谈谈对Spring IOC的理解【转】
学习过Spring框架的人 一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大 ...
- spring ioc DI 理解
下面是我从网上找来的一些大牛对spring ioc和DI的理解,希望也能让你对Spring ioc和DI的设计思想有更进一步的认识. 一.分享Iteye的开涛对Ioc的精彩讲解 Ioc—Inversi ...
- Spring IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理 ...
随机推荐
- oracle 查看数据库版本
select * from v$version;
- 2019.01.04 bzoj2962: 序列操作(线段树+组合数学)
传送门 线段树基础题. 题意:要求维护区间区间中选择ccc个数相乘的所有方案的和(c≤20c\le20c≤20),支持区间加,区间取负. 由于c≤20c\le20c≤20,因此可以对于每个线段树节点可 ...
- 非关系型数据库MongoDB
爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来 ...
- 走进JDK(一)------Object
阅读JDK源码也是一件非常重要的事情,尤其是使用频率最高的一些类,通过源码可以清晰的清楚其内部机制. 如何阅读jdk源码(基于java8)? 首先找到本地电脑中的jdk安装路径,例如我的就是E:\jd ...
- python中下划线
引用:https://blog.csdn.net/tcx1992/article/details/80105645?from=timeline Python中下划线的5种含义 class A(obje ...
- 二叉搜索树、AVL平衡二叉搜索树、红黑树、多路查找树
1.二叉搜索树 1.1定义 是一棵二叉树,每个节点一定大于等于其左子树中每一个节点,小于等于其右子树每一个节点 1.2插入节点 从根节点开始向下找到合适的位置插入成为叶子结点即可:在向下遍历时,如果要 ...
- 剑指offer42:不用加减乘除做加法
分析: (1)十进制加法分三步:(以5+17=22为例) 1. 只做各位相加不进位,此时相加结果为12(个位数5和7相加不进位是2,十位数0和1相加结果是1): 2. 做进位,5+7中有进位,进位的值 ...
- Jersey RESTful WebService框架学习(八)maven搭建
一.pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- Redis集群的主从切换研究
目录 目录 1 1. 前言 1 2. slave发起选举 2 3. master响应选举 5 4. 选举示例 5 5. 哈希槽传播方式 6 6. 一次主从切换记录1 6 6.1. 相关参数 6 6.2 ...
- 《it项目管理那些事》学习笔记
此书适合:计算及相关专业的学生,想成为测试工程师.软件工程师.进入项目经理的人,或者经验丰富的it经理人. 之所以称为学习笔记,是加上我从百度搜到一些在看书过程中不明白的it语,作为菜鸟的我,得多看看 ...