zoukankan      html  css  js  c++  java
  • IOC理解

         控制反转:谁控制了谁? 就是交换控制权。

         1.A a =new A();   要使用这个A 必须你去new他。控制权在a;

         2.由第三方来进行创造这个A,你用的时候直接用就是。控制权在第三方。

         3.其实IOC(invert of control) 就等于一个工厂模式。把我们需要的放到第三方进行操作生产,而工厂模式一般都是利用反射来new具体的对象,然后返回实例进行使用。

         依赖注入就是把依赖注入进去,你现在想组装一台电脑,那么你就需要显示器、主板、键鼠光驱等对象,这些对象通常是new出来的,new出来的对象和当前(this)对象就有了依赖关系。

         控制反转又称为依赖注入,主要为了降低类之间的耦合度,类A依赖类B的时候我们按传统写法就需要在类A里面调用类B对象的方法,而用spring的话,就相当于提供了一个接口,在类A里面调用这个接口就可以得到类B对象,不用new出类B的对象来。利用接口的原理来降低了耦合度,从而实现接口具体实现类的松耦合。

         而为了实现上述原理,我们把他写成配置文件,然后在程序运行时用反射的方式来加载这个配置文件(用spring时就是用的反射机制运行时调用),找到要使用的类,并由spring生成对象。

     1 //一般我们需要斧头去砍树就要自己去制造斧头:
     2  private Axe axe = new Axe();        //自己制造斧头
     3     public void cut(Axe axe)
     4     {
     5         axe.cut();//进行砍树
     6     }
     7 
     8 //而IOC我们需要斧头,这个斧头已经制造好了,我们去取就OK:
     9 private Axe axe = springFactory.getBean("axe");
    10     public void cut(Axe axe)
    11     {
    12         axe.cut();
    13     }
    14 //这些axe就是在spring的配置文件里声明的bean:
    15 <bean id="ss" class="A">
    16     <property name="dao">
    17         <ref bean="dbdao" />
    18     </property
    19 </bean>

         AOP面向切面

         AOP:(aspect oriented program)面向切面编程,将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。

         比如:很多方法可能会抛异常,你要记录这个异常到日志中去,可以写个拦截器类,在这个类中记录日志,在spring.xml中配置一个对这些要记录日志的方法的aop拦截器,在这个方法执行后调用这个拦截器,记录日志。这样就不用每次抛异常都要手动记录日志。

         spring的事务管理用到的就是aop 这样也可以提高程序的内聚性。比如登陆时候在进入登录页面前写入日志,登录以后查看cookie等类似的操作,很常用的,尤其是跟数据库有关的,或者跟支付有关的程序肯定会在每一步前面插入日志,还有某些国际化项目会在每次跳转时候都转换字符集之类。

    转载链接:http://www.cnblogs.com/ingstyle/p/6256502.html

  • 相关阅读:
    前端技术-PS切图
    Html5资料整理
    Html5知识体系
    Html知识体系
    C语言知识结构
    ASP.NET知识结构
    src和href的区别
    Ajax的简单使用
    学习理论
    求模运算法则
  • 原文地址:https://www.cnblogs.com/supersnowyao/p/8455725.html
Copyright © 2011-2022 走看看