相信学习Java语言的同学都对这三个概念不太陌生。下面用spring的例子简单说明这三个概念。

  IoC(Inversion of Control):控制反转。正常情况(控制未反转)下,如果serviceB要调用serviceA,那么serviceB需要实例化serviceA。然后控制反转情况下,spring框架把实例化serviceA的代码放到spring配置文件中,这就实现了控制的反转。

  DI(denpendence inject):依赖注入。把被依赖的实例注入到依赖的实例中,spring实例化serviceA,然后把serviceA的实例注入到serviceB,这就是注入。而不是由serviceB实例化serviceA。

  AOP(aspect oriented programing):面向切面编程。讲一个spring的应用。例如:通过spring事务的配置,可以让spring管理事务,通过代理的方式实现事务的管理,而对业务代码没有侵入。

IoC、DI、AOP的更多相关文章

  1. 初步理解IOC和DI和AOP模式

    初步理解IOC和DI和AOP模式 控制反转(IOC) 控制反转(IOC,Inversion of Control)是一种转主动为被动关系的一种编程模式,有点类似于工厂模式,举个栗子, 下面这个这不是I ...

  2. IOC和DI,AOP的本质理解

    IOC: Inversion of Control,控制反转, 控制权从应用程序转移到框架(如IOC容器),是框架共有的特性. 对于IOC的理解,可以把IOC看作是一个生产和管理bean对象的容器.原 ...

  3. Spring自学教程-IOC、DI、AOP(二)

    一.spring的IOC-就是怎样使用spring来创建对象 二.springDI(依赖注入)-就是怎样给属性赋值 通过set方式赋值 以下我们只需要记住两点的赋值,基本类型和引用类型的赋值 基本类型 ...

  4. POM、STS、IOC、DI、AOP

    POM:全称:poject object model 说明:项目对象模型.maven用来管理项目的依赖.编译.文档等信息 STS: 全称:spring tool suite 说明:spring 基于e ...

  5. java的几个概念AOP、IOC、DI、DIP、工厂模式、IOC容器

    1.AOP:面向切面编程 把一些公共类,比如日志类.安全类.数据库连接类.系统统一的认证.权限管理类.资源池(如数据库连接池的管理).性能监控等做成一个公共类,当其他类需要时,进行注入(调用).这样这 ...

  6. Java面试题_第三阶段(Spring、MVC、IOC、AOP、DI、MyBatis、SSM、struts2)

    1.1 何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗? 答:1)用于创建bean对象,管理bean对象的那个容器. 2)Spring IOC 容器 ...

  7. SSM框架中IoC、DI与AOP的理解

    框架封装了普通项目中程序员需要重复书写的代码和调用过程,就比如说在传统的jsp项目中,我们的controller接收到前端的请求然后程序员就需要去开发Dao层,里面还涉及数据库的连接和存储过程的代码, ...

  8. Spring入门一:IOC、DI、AOP基本思想

    Spring框架是一个集众多涉及模式于一身的开源的.轻量级的项目管理框架,致力于javaee轻量级解决方案.相对于原来学过的框架而言,spring框架和之前学习的struts2.mybatis框架有了 ...

  9. 对依赖倒置原则(DIP)及Ioc、DI、Ioc容器的一些理解

    1.概述 所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体.简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模 ...

  10. 对依赖倒置原则(DIP)及Ioc、DI、Ioc容器的一些理解(转)

    所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体.简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合 ...

随机推荐

  1. FDCT变换 公式法

    // 对亮度信号进行FDCT变换// @param   data    亮度信号的存储数组void CompressEncode::standardFDCT(BYTE data[MATRIXSIZE] ...

  2. Python 代码覆盖率统计工具 coverage.py

    coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...

  3. 去除magento多店铺URL地址中的“___from_store=”

    magento 的多店铺功能,大多数情况下是根据语言来进行选择的,当添加了多店铺之后,一般情况下我们会选择开启添加store code到url地址中. Magento 自带的这种功能算是比较不错了,但 ...

  4. vue.js在windows本地下搭建环境和创建项目

    Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vu ...

  5. C# DataTable中根据某Column值(不重复)获取该值所在行

    System.Data.DataTable dt = new System.Data.DataTable(); dt.PrimaryKey = new System.Data.DataColumn[] ...

  6. 把汉字转换为html实体编码

    背景:工作中需要把汉字转换为html实体编码实现方式:import org.apache.commons.lang.StringEscapeUtils;public static void main( ...

  7. Android 音量调节

    对于Android的音量调节,可以分为按键调节音量和设置中调节音量.我们首先说一说设置中的音量调节. 一.音量的分类: 1.AudioManager.STREAM_VOICE_CALL 2.Audio ...

  8. Javascript模块化编程(三):require.js的用法(转)

    这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...

  9. oracle细节

    1.oracle中NVL的含义: 如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. 2.Oracle中in和exists的区别: 1).sel ...

  10. 并发框架Disruptor浅析

    1.引言 Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟.D ...