IOC(控制反转)

下面是多个针对此理解的表达。

  • 一个对象A依赖另一个对象B就要自己去new 这是高度耦合的 IOC容器的使用。 
    比如在B中使用A很多,哪一天A大量更改,那么B中就要修改好多代码。
  • 通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。
  • 针对一个接口,我们可能会写多个实现类,如果在代码中、程序中对实现类的对象进行创建,当想更换实现类时(使用其他的实现类),就需要对代码进行更改。
  • 一个使用实例 
    通过spring的IOC功能,在xml配置文件中,给接口的实现类起一个名字“XXX”,代码中创建对象时,使用以下方式创建:

DI(Dependency Injection,依赖注入)

首先应该明白两个问题:1,谁依赖谁;2,谁注入,注入什么?
  • 1
  • 2
  • 利用xml的配置信息,在客户端代码中不用具体new任何的java对象了,java对象的创建工作,和对象中元素的赋值工作可以交给xml(spring)处理。
  • 回答文中开头两个问题:1.客户端代码中,具体对象的创建依赖于xml文件(spring,即IOC容器);2.是IOC容器注入,在运行期,根据xml的配置信息,将具体的对象注入到相应的bean中。

JavaBean:为了写出方便他人使用的类,于是规定,必须有一个零参的构造函数,同时还要用get/set方法,以便隐藏内部细节,方便使用和之后的代码更新。


  • 针对一个JavaBean,为了使用它,首先需要new一个对象,之后需要对其中的set方法进行调用进而赋值。代码之间的联系变得很大,封装的特性渐渐变小。这样在修改代码时,就麻烦了。要成堆的更改,尤其是在不同团队分工开发的过程中,代码变更影响巨大。
  • 通过控制反转(IOC)、依赖注入,new的同一种对象,在xml文件中都给他起一个小名,这样更改时只需要在xml文件中,将小名对应的类的具体路径更改了。不需要一个个.java文件替换。
  • 在使用set方法传值时,如果针对具体的属性值,进行填写,更改起来也会麻烦一些,通过Spring来进行赋值,更改起来更加方便。

注:关于set方法传值,以及具体的操作方法好像有多种,具体理解不够,需要实际编码以及通过专业书籍系统学习。2017.1.3

面向切面AOP

可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
  • 1
  • 2
  • 将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来

spring三大核心的更多相关文章

  1. spring三大核心学习(一)---控制反转

    记得当年大学时候,java的企业级框架还是ssh的天下(spring,struts和hibernate),但是现在,感觉spring已经完全把那两个框架甩在后边了.用spring的人越来越多,用str ...

  2. Spring是什么、spring容器、Spring三大核心思想DI(依赖注入)、IOC(控制反转)、AOP(面向切面编程)

    1.Spring (1)Spring是什么? 是一个轻量级的.用来简化企业级应用开发的开发框架. 注: a.简化开发: Spring对常用的api做了简化,比如,使用Spring jdbc来访问数据库 ...

  3. Spring的三大核心思想:IOC(控制反转),DI(依赖注入),AOP(面向切面编程)

    Spring核心思想,IoC与DI详解(如果还不明白,放弃java吧) 1.IoC是什么?    IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多 ...

  4. 【Spring】 Spring的核心容器

    Spring的核心容器 文章目录 Spring的核心容器 BeanFactory ApplicationContext 1.通过ClassPathXmlApplicationContext创建 2.通 ...

  5. spring IOC核心原理

    下面来了解一下Spring到底是怎么运行的. public static void main(String[] args) { ApplicationContext context = new Fil ...

  6. spring技术核心概念纪要

    一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述 ...

  7. Spring最核心的功能是什么?使用Spring框架的最核心的原因是什么?

    quote:Spring最核心的功能是什么?使用Spring框架的最核心的原因是什么? (IT公司面试手册,可以多看看) spring 框架中核心组件有三个:Core.Context 和 Beans. ...

  8. JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)

    接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...

  9. Spring系列(一) Spring的核心

    Spring 简介 Spring 是一个开源轻量级企业应用架构,目的是为了简化企业级应用开发.(1)Spring 框架可以帮我们管理对象的生命周期,帮助我们管理对象间的依赖关系,相互协作:(2)Spr ...

随机推荐

  1. Yii2.0 RESTful API 基础配置教程

    创建api应用  通过拷贝原有的应用,重命名得到新的应用 安装完 Composer,运行下面的命令来安装 Composer Asset 插件: php composer.phar global req ...

  2. 修改Docker默认的网段

    背景 一同事在研究他的安全大业,需要在AWS服务器上部署他的秘密武器,秘密武器通过Docker来部署:在部署前可以通过跳板机的内外网ssh登录上这台服务器:部署后只能通过外网ssh登录这台服务器... ...

  3. 第三章 C#程序结构 (3.3 循环结构)

    (1) while循环 当表达式为真,则执行下面的语句:语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句:然后再判断表达式是否为真……就这样一直循环下去,直到表达式为假,跳出循环. [ ...

  4. http://blog.csdn.net/u012905422/article/details/53340260

    轉自:http://blog.csdn.net/u012905422/article/details/53340260 对于python2.7版本,很多教程(如http://stackoverflow ...

  5. eclipse中解决git分支合并冲突

    冲突场景: 在master分支上有文件student.py. 在master上增新一个dev分支 在dev分支上修改文件student.py.增加函数def d():,并commit; 在master ...

  6. Celery结合Django使用

    一.Celery介绍 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个 ...

  7. http请求返回响应码及意义

    http 响应码及意义 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 281 ...

  8. 新建服务器出现错误 Peer authentication failed for user "postgres" 的解决办法

    用pgadmin3 新建服务器出现错误 Peer authentication failed for user "postgres" 在stackoverflow上找到答案,出现此 ...

  9. react连连看

      // Math.floor(t * Math.random()); var isInclude = function (array, element) { let alen = array.len ...

  10. ABBYY FineReader 14OCR解锁

    ABBYY FineReader 14是2017年新推的文字处理编辑软件,能够将图像扫描转换成文档处理.不论是在使用群体方面还是功能特性方面都是极好的. •确保扫描仪正确地连接到电脑,并将其打开.查阅 ...