Spring之IOC篇章具体解释
专题一 IOC
1.接口以及面向接口编程
a.结构设计中,分清层次以及调用关系,每层仅仅向外(或者上层)提供一组功能接口,各层间仅依赖接口而非实现类这样做的优点是,接口实现的变动不影响各层间的调用。这一点在公共服务中尤为重要。
b.“面向接口编程”中的“接口”。是用于隐藏详细实现。和实现多态性的组件 。
2.什么是IOC
控制反转(inversion of control)。控制权的转移,应用程序本身不负责依赖对象的创建和维护。
而是由外部容器负责创建和维护。(我们不负责对象的创建,由外部(这里指的是spring容器)容器来创建,我们来使用)
以下是一个spring 官网的图片来说明这个关系。
实现IOC的方法:DI(依赖注入,dependency injection)是其(控制反转IOC的)一种实现方式。所谓依赖注入,就是由IOC容器。在执行期间,动态的将某种依赖关系注入到对象之中。
IOC的目的:创建对象而且组装对象之间的关系。这个怎么理解呢?在初始化的时候,会创建一系列的对象。同一时候它可以把对象之间的这样的依赖关系通过注入的方式组织起来。
究竟是什么被反转了,Martin Fowler经过分析,得出了答案,“ 获得依赖对象的过程被反转了”,获得依赖的过程由自身管理,变成了由IOC容器主动注入。
接下来我们进行生动形象的描写叙述IOC,我们将IOC与房屋的中介做一个比喻:
房屋中介:
IOC
1.找中介
1.找IOC容器
2.中介介绍房子
2.容器返回对象
3.租房,入住
3.使用对象
spring 中的对象叫做 bean
自从有了IOC之后:
不必自己创建对象,由于IOC机制已经提供了。
面向接口编程。IOC隐藏了实现
不用再管理对象了。IOC管理了。
Spring之IOC篇章具体解释的更多相关文章
- Spring的IOC原理[通俗解释一下]
Spring的IOC原理[通俗解释一下] 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图 ...
- [转]Spring的IOC原理[通俗解释一下]
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...
- Spring的IOC原理 通俗解释
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...
- 【SSH进阶之路】Spring的IOC逐层深入——Spring的IOC原理[通俗解释一下](三)
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...
- 【死磕 Spring】----- IOC 之深入理解 Spring IoC
在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识,本篇为[死磕 Spring]系列博客的第一篇博文,主要 ...
- 【SSH进阶之路】Spring的IOC逐层深入——源码解析之IoC的根本BeanFactory(五)
我们前面的三篇博文,简单易懂的介绍了为什么要使用IOC[实例讲解](二).和Spring的IOC原理[通俗解释](三)以及依赖注入的两种常用实现类型(四),这些都是刚开始学习Spring IoC容器时 ...
- Spring中IOC和AOP的详细解释
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过s ...
- Spring中IOC和AOP的详细解释(转)
原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...
- Spring IOC源代码具体解释之容器初始化
Spring IOC源代码具体解释之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比較典型的代码 ClassPathResource res = new C ...
随机推荐
- chrome 打开上次关闭的tab ctrl+shift+T
chrome 打开上次关闭的tab ctrl+shift+T
- 解决for循环下变量显示一致的问题
for(var i=0;i<10;i++){ setTimeOut(function(){ console.log("i:",i); },100) } 上面显示的打印出来结果 ...
- LinuxMint 编译 LittlevGL GUI
编译必须 安装arm-linux-gcc-4.4.3.tar.gz PC simulator You can try out the Littlev Graphics Library using on ...
- MySQL-05 用户管理
学习目标 权限表及其用法 账户管理 权限管理 访问控制 权限表 MySQL权限表存放在MySQL数据库里,由mysql_install_db脚本初始化.这些MySQL权限表分别为user.db.pro ...
- 万能的搜索--之BFS(三)
接着(一)start (二)广度优先搜索(BFS) 广度优先搜索(又称宽度优先搜索算法)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. Dijkstra单源最短路径算法和Pri ...
- linux常用过滤日志命令
#过滤nginx访问日志awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10 ...
- CSS---基础外部样式表
<link rel="stylesheet" type="text/css" href="style.css" media=" ...
- 条款15:在资源管理类中提供对原始资源的访问(Provide access to raw resources in resource-managing classes)
NOTE: 1.APIs往往要求访问原始资源(raw resources),所以每一个RAII class应该提供一个“取得其所管理之资源”的办法. 2.对原始资源的访问可能经由显示转换或隐式转换.一 ...
- Vijos1144 皇宫看守 (0/1/2三种状态的普通树形Dp)
题意: 给出一个树以及一些覆盖每个点的花费,求每个点都能被自己被覆盖,或者相邻的点被覆盖的最小价值. 细节: 其实我乍一眼看过去还以为是 战略游戏 的复制版 可爱的战略游戏在这里QAQ(请原谅这波广告 ...
- shell for mysql backup in linux
今天上班只有一台linux系统,就学着在linux上写了个脚本,没啥技术含量 省得每天敲代码备份 没有设置自动备份时间,这里可以参照 http://www.th7.cn/db/mysql/201305 ...