Spring之IOC(一)

对于Spring的基本概念在这里就不在赘述了。

Spring的最核心的两部分则是AOP(面向切面编程)IOC(控制反转)。本篇文章主要讲我对IOC的理解。

IOC:即Inversion of Control,控制反转。首先,IOC不是一种技术,而是一种思想。我们可以把IOC模式看做是工厂模式的升华,可以把IOC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java 的"反射"编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是把工厂和对象生成这两者独立分隔开来,以提高系统的性能。

那么说到这里到底什么是IOC(控制反转)呢?

之前我们创建对象的时候就是new,是由程序进行对象的创建。而IOC是一个创建对象的容器,即IOC容器控制对象的创建。

我觉得控制反转就是对象创建任务的转移。之前是我们主动创建对象,而现在创建对象交给IOC容器进行操作,我们只需要使用创建好的对象。之前是我们控制着对象的创建,现在由IOC进行控制。

为什么要使用IOC?

软件开发追求的是高内聚、低耦合。

现在有一个User类,类中有一个非静态方法say();

publicclass User {

publicvoid say(){

System.out.println("hello world");

}

}

在另一个类中需要使用这个类中的方法,则首先要创建User类的对象,通过对象调用say方法,之前我们进行对象的创建都是直接new的,

publicclass Main {

publicstaticvoid main(String[] args) {

User user = new User();

user.say();

}

}

但如果我们在创建对象的时候使用的是这种new的方式进行创建,一个类中有另一个类的实例,类与类之间的联系过于紧密,耦合度过高,如果某一个类进行了修改,可能会引起很多类的修改,对于一个项目来说,不但增加了开发的难度,对后期的测试以及维护也是十分困难的。但spring中的IOC创建对象不是通过new的方式实现,而是交给spring进行配置创建对象,就是把对象的创建交给Spring进行管理。使用把对象的创建交给IOC的话,类和类之间的耦合度会极大的降低,需要别的类对象的时候,IOC会主动创建对象并且加到需要的地方。

对于IOC的底层原理,以后攻读Spring源码的时候会写一些。

以上仅是一个菜鸟的个人理解,有些偏颇。刚刚写博客,语无伦次。感谢您耐心的看完,谢谢。

Spring之IOC(一)的更多相关文章

  1. Spring的IOC和AOP之深剖

    今天,既然讲到了Spring 的IOC和AOP,我们就必须要知道 Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例 ...

  2. Spring框架IOC容器和AOP解析

    主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.S ...

  3. Spring总结—— IOC 和 Bean 的总结

    一.Spring 官方文档中给出的 Spring 的整体结构. 二.我自己所理解的 Spring 整体结构图. 三.本次总结 Spring 核心部分 1.从上面图中可以看出,Beans 和 Conte ...

  4. spring的IOC和AOP

     spring的IOC和AOP 1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是 ...

  5. spring容器IOC创建对象<二>

    问题?spring是如何创建对象的?什么时候创建对象?有几种创建方式?测试对象是单例的还是多例的 ?对象的初始化和销毁? 下面的四大模块IOC的内容了!需要深刻理解 SpringIOC定义:把对象的创 ...

  6. Spring中IoC的入门实例

    Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...

  7. Spring中IOC和AOP的详细解释

    我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过s ...

  8. Spring的IoC应用

    IoC(Inversion of Control,控制反转) Spring的IoC应用是其框架的最大的特点,通过依赖注入可以大大降低代码之间的耦合度,从而实现代码和功能之间的分离.在代码中可以不直接和 ...

  9. Spring 实践 -IoC

    Spring 实践 标签: Java与设计模式 Spring简介 Spring是分层的JavaSE/EE Full-Stack轻量级开源框架.以IoC(Inverse of Control 控制反转) ...

  10. 挖坟之Spring.NET IOC容器初始化

    因查找ht项目中一个久未解决spring内部异常,翻了一段时间源码.以此文总结springIOC,容器初始化过程. 语言背景是C#.网上有一些基于java的spring源码分析文档,大而乱,乱而不全, ...

随机推荐

  1. [模拟赛] T3 最优序列

    Description 给出一个长度为n(n<=1000)的正整数序列,求一个子序列,使得原序列中任意长度为m的子串中被选出的元素不超过k(k<=m<=10)个,并且选出的元素之和最 ...

  2. 在JavaScript里 (a ==1 && a== 2 && a==3) 有可能是 true 吗?

    ps:今天看到这个有趣的问题,跟大家分享下 一个有趣的问题: 在 JavaScript 中, (a ==1 && a== 2 && a==3) 是否有可能为 true ...

  3. Algorithm --> 判读是否是子树

    问题 判断一棵树是否是另一棵树的子树,如图 思路 问题分两步: 找值相同的根结点(遍历解决) 判断两结点是否包含(递归:值.左孩子.右孩子分别相同) 树节点定义 struct TreeNode { i ...

  4. java.lnag.Throwable详细解读

    public  class Throwable  extends  Object  implemnts Serializable Throwable类是所有错误或异常的超类.只有当对象是此类(或其中之 ...

  5. zip详解

    http://www.360doc.com/content/06/0915/14/10610_208147.shtml

  6. android中include标签使用详解

    android中include标签是为了便于控件的覆用的一个很好解决方案.   但是也有一些需要注意的地方,下面是本人在项目中碰到过的一个问题,做此记录,便于以后查看.   include标签用法. ...

  7. Beta总结

    45°炸 031502601 蔡鸿杰 031502604 陈甘霖 031502632 伍晨薇 一.写在Beta项目前 Beta 凡 事 预 则 立 二.GitHub传送门 Beta冲刺重要版本 三.用 ...

  8. C语言博客作业--数据类型

    一.PTA实验作业 题目1:7-8 判断合法标识符 1. 本题PTA提交列表 2. 设计思路 1.定义整数型变量repeat和i来存放判断字符串是否为合法标识符的次数,定义字符型ch来存放读取的字符 ...

  9. python的Virtualenv

    Virtualenv 虚拟的 Python 环境(简称 venv) 是一个能帮助你在本地目录安装不同版本的 Python 模块的 Python 环境,你可以不再需要在你系统中安装所有东西就能开发并测试 ...

  10. configparser 练习

    [kaixin]xxx = 333name = hahheh = 0[erick]age = 123555xxx = ooo555name = hah555 1 import configparser ...