(1)  ioc,意思是Inversion of control,(反转控制),控制反转,就是交换控制权的意思。现在一般不使用这个词,一般使用dependency injection(依赖注入)。依赖注入就是将依赖 注入进去。
(2)这么来说吧,在一个动作或者事件中,比如说,你现在想写字(Action),那么你需要笔,于是乎,你new了一个笔来写字,这里,你用了new笔,你这个动作和笔有了关联,没了笔,你就写不了字,也就是说,你的这个行为依赖于笔了,他们就构成了依赖关系。或者你现在想组装一台电脑(Transaction),那么你就需要显示器、主板、键鼠光驱等对象,这些对象通常是new出来的,new出来的对象和当前(this)对象就有了依赖关系。

spring中对依赖的对象采用注入,这就是常说的依赖注入吧

(3)反转控制嘛
给你个简单的例子:
1、未用IOC:一个人背着一大包炸药去炸敌人的一座碉堡
2、采用IOC:这个人什么都不带跑到敌人碉堡下,然后打电话给总部说,把炸药给我扔过来。

(4)ssh框架,是目前较为流行的框架之一。有时根据项目需要,可能只用到了struts和hibernate。有时可能是spring。
首先理解三个独立框架的功能。struts的目的,主要是请求和相应的分发跳转。页面数据的采集获得。hibernate主要针对于DB层的交互。DB的连接、对持久化对象的操作等。spring核心内容应该是IOC。理解它的控制反转和OOP(面向切面)

(5)所谓IoC,简单理解就是把原本应该我们去new对象这个操作转到spring容器去执行。
而且IoC核心其实就是一个工厂模式,而工厂模式就是制造(new)对象的,工厂模式中,一般都是利用反射来new具体的对象,然后返回实例。
(6)

IOC,控制反转这样理解
举个简单的例子
一个人要去砍柴。那么绝大部分时候,我们会这样设计程序
class Axe
{
   //一些字段或方法
}
class person
{
    private Axe axe = new Axe();        //自己制造斧头
    public void cut(Axe axe)
    {
        axe.cut();
    }
}
即是,我们要去砍柴,我们要自己制造斧头。
而IOC的意思就是我们需要斧头,这时候斧头就已经制造好了,我们去取就可以,不用自己制造.

class person
{
    private Axe axe = springFactory.getBean("axe");
    public void cut(Axe axe)
    {
        axe.cut();
    }
}
这些axe就是在spring的配置文件里声明的bean.

IOC和控制反转是一个意思
(7)<bean id="ss" class="A">
    <property name="dao">
        <ref bean="dbdao" />
    </property
</bean>

个人理解:以上就是ioc的核心,意思是在此创建dbdao的对象,此对象在类A中使用,在类A中使用时候,用地名字是ss。通过getbean(ss)来获取对象。

(8)我来给你个简单明了的解释。
    控制反转又成为依赖注入,主要为了降低类之间的耦合度,类A依赖类B的时候我们按传统写法就需要在类A里面调用类B对象的方法,而用SPRING的话,就相当于提供了一个接口,在类A里面调用这个接口就可以得到类B对象,不用NEW出类B的对象来。利用接口的原理来降低了耦合度(如果你熟习接口的设计和使用就会很清楚)。
    而为了实现上述原理,我们把他写成配置文件,然后在程序运行时用反射的方式来加载这个配置文件(用spring时就是用的反射机制运行时调用),找到要使用的类,并由spring给你生成对象。这样就OK了。
    最后在总结下这两个名词。控制反转,就是交换控制权的意思,比如我类A需要用到类B的时候,具体的实现方式是在类B的某个方法里,也就是说类B控制着这个业务的具体实现。而现在用IOC以后,类B交出控制权,类A来进行控制,类A里只需要调用一个接口的方法,不管你这个方法的具体实现是由类B的对象来实现,还是由其他类的对象来实现,反正类A调用这个接口的这个方法就可以搞定他需要实现的业务内容,这样一来,类A它看上去就得到了实现某个业务的控制权。而依赖注入这个词则体现得更加专业一点,就是讲在我的程序里,我从来不去构造(new HelloWorld()这样的方法)任何对象,只是在需要用到(也就是依赖)某个对象的时候,我就用spring给他注入这个对象。这个注入的方式也就降低了程序的耦合度
(9)

AOP面向切面编程 将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。 比如: 很多方法可能会抛异常,你要记录这个异常到日志中去,可以写个拦截器类,在这个类中记录日志,在spring.xml中配置一个对这些要记录日志的方法的aop拦截器 在这个方法执行后调用这个拦截器,记录日志。这样就不用每次抛异常都要手动记录日志。 spring的事务管理用到的就是aop 这样也可以提高程序的内聚性。
(10)
aop叫aspect oriented program,面向切面的编程 ioc是invert of control,反转控制 在spring in action那本书里有详细阐述,简单说一下,ioc就是其实就是依赖注入,即用接口编程,在程序中不出现new关键字,而是用接口来命名引用,然后通过某种方式(多数用spring,不过Google guice也是很好的ioc框架)把接口的某个实现类的实例注入到引用里,从而实现与接口具体实现类的松耦合 aop方式就理解起来就简单了,其方式很类似j2ee中的filter,就是在程序正常的业务流中间像切面一样插入很多其他需要执行的代码,比如登陆时候在进入登录页面前写入日志,登录以后查看cookie等类似的操作,很常用的,尤其是跟数据库有关的,或者跟支付有关的程序肯定会在每一步前面插入日志,还有某些国际化项目会在每次跳转时候都转换字符集之类
(11)我给你来个权威的,你答到这下面就基本不问了。 IOC(反转控制):对成员变量的赋值的控制权从代码中反转到配置文件中。 AOP:Aspect(切面) Oriented(面向) Programming(编程),面向切面编程。

对IOC,AOP的理解相关推荐

  1. IOC和AOP概念理解

    IOC和AOP概念理解总结: IOC:控制反转 是一种降低对象之间耦合关系的设计思想,面试的时候最好能说出来个例子,加深理解.例子:租房子,以前租房子需要一个房子一个房子找,费时费力,然后现在加入一个 ...

  2. Spring框架:谈谈对IOC和AOP的理解

    在java面试中,如果我们被问及Spring框架的相关问题,那么一定避不开对Spring中的IOC和AOP的理解和使用,本文就简单谈论对于Spring中IOC和AOP的理解. 一.IOC的理解 1.1 ...

  3. 谈谈自己对Spring中IOC和AOP的理解

    Spring框架的核心思想主要是IOC和AOP的思想 IOC IOC概念 Spring中的IOC AOP AOP概念 百度百科的解释 个人理解 AOP思想 IOC IOC概念 所谓IOC即 Inver ...

  4. Spring常用注解,注解 IOC ,AOP,MVC 的理解

    文章目录 大佬总结 0.Spring常用注解 0.1.SpringBootController里面的用法 0.1.1.SpringBoot 中常用注解@Controller/@RestControll ...

  5. Spring IOC AOP详细笔记

    spring 文章目录 spring 什么是spring spring框架作用: ioc aop spring基本配置 IOC掌握什么? IOC创建对象方式 Spring配置 别名配置 bean配置 ...

  6. IoC+AOP的简单实现

    原文地址为: IoC+AOP的简单实现 对EnterLib有所了解的人应该知道,其中有一个名叫Policy Injection的AOP框架:而整个EnterLib完全建立在另一个叫作Unity的底层框 ...

  7. spring IOC和DI 理解

    IOC(控制反转)和DI(依赖注入)是spring中的重要组成部分,下面是个人的一些理解,不代表官方. 1.IOC是什么? IOC:全名是Inversion of Controller 中文解释是控制 ...

  8. SpringIOC 和AOP 的理解

    SpringIOC 和AOP 的理解 IOC(含义.举例.作用):控制反转,是一种设计思想,将原本需要自己手动创建的对象交由Spring框架来管理.(对象A需要对象B,原本是需要A自己创建对象B,现在 ...

  9. Spring原理/SpringMVC原理/IOC/AOP原理

    Spring原理/SpringMVC原理/IOC/AOP原理 我的微型IOC框架实现 我的微型IOC框架实现 当你打开这本书的时候我要告诉你的第一句话就是认真把前言读完,因为前言概括的本书的大纲以及思 ...

最新文章

  1. docker可视化管理工具对比 DockerUI Shipyard Rancher Portainer
  2. 2016年网络诉求:物联网+SDN+自动化
  3. Ajax缓存解决办法
  4. 012、JVM实战总结:案例实战:每日百万交易的支付系统,JVM栈内存与永久代大小又该如何设置?
  5. linux下keepalived+nginx的负载均衡搭建
  6. java 线程重入,java synchronized加载加锁-线程可重入详解及实例代码
  7. android studio 便携式wlan热点 网络名称_手机移动网络共享,还可以这么玩,你知道吗?...
  8. 数据库pgAdminIII导入sql文件
  9. linux下如何实现pgadmin备份,linux下pgAdmin4安装
  10. 覆盖计算机网络分类有哪些 英语缩写,简述按覆盖范围划分计算机网络的分类类型有哪些?英语缩写分别是什么?...
  11. 1096: 水仙花数(函数专题,多实例)(细节较多)
  12. MacCormack差分格式的全局误差分析
  13. Hacker News API
  14. Hive实战之视频网站数据分析
  15. 领导喜欢员工的15种素质
  16. expdp报错ORA-39002: invalid operation,ORA-39070: Unable to open the log file
  17. 职高计算机应用基础教学总结,中职《计算机应用基础》教学心得
  18. Word格式处理控件Aspose.Words for .NET水印处理教程——如何添加和删除水印
  19. 夏天吃西瓜10大禁忌必须知道
  20. centos安装minikube

热门文章

  1. JavaScript 计算两个颜色叠加值
  2. Java 反射 方法调用
  3. 推荐百度地图的新功能--“三维”
  4. 学学这个垃圾×××网站怎么埋头赚大钱的!
  5. 边缘计算:安全保护 快速响应
  6. PostgreSQL调研
  7. MATLAB实例路径与安装路径
  8. 教你如何更优惠的购买阿里云服务器?
  9. 艾伟_转载:从ASP.NET的PHP执行速度比较谈起
  10. WPF 动态模拟CPU 使用率曲线图