spring3系列一
IOC基础
Ioc是什么
Ioc——Inversion of Control 控制反转,不是什么技术,而是一种设计思想。在java开发中,ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象直接控制。如何理解好ioc?要明确(谁控制谁,控制什么,为何反转,哪些方面反转了)
谁控制谁,控制什么:传统java se程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而ioc是专门一个容器来创建这些对象,即由ioc容器来控制对象的创建。谁控制谁?当然是ioc容器控制对象;控制什么?控制了外部资源获取(不只是对象包括比如文件等)
为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象,为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以反转;哪些方面反转了?依赖对象的获取被反转。
Ioc能做什么?
Ioc不是一种技术,只是一种思想,一个重要的面向对象的编程法则,它能知道我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了ioc容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行诸如组合对象,所以对象与对象之间是松耦合,这样也方便测试,有利于功能复用,更重要的事使得程序整个体系结构变得非常灵活。
DI——Dependency Injection 依赖注入:组件之间依赖关系由容器在运行期决定,形象的说,即由容器冬天的将某个依赖关系注入到组件中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件复用的频率,并为系统搭建一个灵活、可扩展平台。通过依赖注入机智,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关系具体的资源来自何处,由谁实现。
理解DI的关键是:谁依赖谁,为什么需要依赖,谁注入谁,注入了什么
谁依赖于谁:当然是应用程序依赖于ioc容器
为什么需要依赖:应用程序需要ioc容器来提供对象需要的外部资源
谁注入谁:ioc容器注入应用程序某个对象
注入了什么:注入某个对象所需要的外部资源(包括对象、资源、常量数据)
Ioc和DI关系:同一个概念不同角度的描述。
IoC容器的概念
IOC容器就是具有依赖注入功能的容器,ioc负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关对象,应用程序由ioc容器进行组装。在spring中的BeanFactory是ioc容器的实际代表者。
Ioc容器是如何工作的:
以xml配置方式来分析一下:
1准备配置文件2由ioc容器进行解析元数据3实例化ioc容器
spring3系列一的更多相关文章
- Spring3系列13-Controller和@RequestMapping
Spring3系列13-Controller和@RequestMapping Controller返回值,String或者ModelAndView @RequestMapping关联url @Requ ...
- Spring3系列12- Spring AOP AspectJ
Spring3系列12- Spring AOP AspectJ 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代 ...
- Spring3系列11- Spring AOP——自动创建Proxy
Spring3系列11- Spring AOP——自动创建Proxy 在<Spring3系列9- Spring AOP——Advice>和<Spring3系列10- Spring A ...
- Spring3系列10- Spring AOP——Pointcut,Advisor拦截指定方法
Spring3系列10- Spring AOP——Pointcut,Advisor 上一篇的Spring AOP Advice例子中,Class(CustomerService)中的全部method都 ...
- Spring3系列9- Spring AOP——Advice
Spring3系列9- Spring AOP——Advice Spring AOP即Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统 ...
- Spring3系列8- Spring 自动装配 Bean
Spring3系列8- Spring 自动装配 Bean 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiri ...
- Spring3系列7- 自动扫描组件或Bean
Spring3系列7- 自动扫描组件或Bean 一. Spring Auto Scanning Components —— 自动扫描组件 1. Declares Component ...
- Spring3系列6 - Spring 表达式语言(Spring EL)
Spring3系列6-Spring 表达式语言(Spring EL) 本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.S ...
- Spring3系列5-Bean的基本用法
Spring3系列5-Bean的基本用法 本篇讲述了Bean的基本配置方法,以及Spring中怎样运用Bean. 主要内容如下: 一. Spring中Bean的相互引用 二. Sp ...
- Spring3系列4-多个配置文件的整合
Spring3系列4-多个配置文件的整合 在大型的Spring3项目中,所有的Bean配置在一个配置文件中不易管理,也不利于团队开发,通常在开发过程中,我们会按照功能模块的不同,或者开发人员的不同,将 ...
随机推荐
- 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]
前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...
- iOS UINavigationController(内容根据iOS编程编写)
我们知道 UITabBarController 对象,可以通过使用该对象,用户可以切换不同的屏幕.当要切换的各个屏幕之间没有相互依存关系的时候,该对象可以很好的完成任务.但是当多个屏幕互有关系的时候, ...
- domReady的实现
我们都知道JQ的 $(document).ready(fn) 方法.可以在页面准备就绪后才执行脚本,该方法相比传统的window.onload 事件,它的优势体现于onload事件是需要等到页面中所有 ...
- [精品书单] C#/.NET 学习之路——从入门到放弃
C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...
- 浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。
本文版权桂博客园和作者吴双共同所有,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/6016055.html 写在前面 大家好我是博客园的蜗牛,博客园的蜗牛就是我 ...
- sessionStorage 和 localStorage 、cookie
sessionStorage 和 localStorage html5中web storage包括两种储存方式:sessionStorage 和 localStorage sessionStorage ...
- JSP简单记录
JSP,全称是Java Server Page,是运行在服务器端的页面,是建立在Servlet规范的动态网页技术,JSP文件在第一次请求时,会被编译成Servlet,所以JSP也可以看成是运行中的Se ...
- centos6.5下使用yum完美搭建LNMP环境(php5.6) 无脑安装
准备工作 配置防火墙,开启80端口.3306端口删除原有的 iptables , 添加合适的配置 rm -rf /etc/sysconfig/iptables vi /etc/sysconfig/ip ...
- JavaWeb之XML详解
XML语言 什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据. XML标签没有 ...
- ABAP游标的使用
在Oracle,SQLServer中游标的使用是经常的,所以在ABAP不懂是不行的...... 1.声明游标 OPEN CURSOR [WITH HOLD] <c> FOR SEL ...