设为首页 加入收藏

TOP

IOC理解
2019-09-17 18:54:40 】 浏览:33
Tags: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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇AutoFac使用方法总结四:生命周期.. 下一篇AutoFac在项目中应用的体会

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目