您的位置:首页 > 编程语言

AOP 面向方面编程 笔记

2010-03-19 11:24 155 查看
1.AOP 面向方面编程   Aspect 方面
2.OOP   关于对象怎么封装的问题
  AOP   为程序的某个切面进行的通用处理
3.spring 两大核心
 (1) IOC 依赖注入 (控制反转)
 (2) AOP 在方法运行前拦截方法 (即先执行AOP) 配置文件中用到了 ProxyFactoryBean类 作为反转节点,
  在测试类中通过获得此节点可以得到一个绑定的类的接口
 
.eg. 
  使用AOP应注意的
  A。面向接口的
  B. 定义通知类
  C.     主要是application.xml 文件的配置
 --普通类的反转
 <bean id="login" class="com.sun.demo.Login"></bean>
 --实现Aop的接口,
 <bean id="advice" class="com.sun.demo.LoginAdvice"></bean>
 --下面的代码是通过一个bean 的三个属性将类绑定
 <bean id="loginproxy" class="org.springframework.aop.framework.ProxyFactoryBean">
 <property name="proxyInterfaces">
 <value>com.sun.demo.ILogin</value>   --类的接口
 </property>
 <property name="target">    --找到类节点
 <ref bean="login"/>
 </property>
 <property name="interceptorNames">
 <value>advice</value>        -- 继承Aop接口的拦截类
 </property>
 </bean>
  D. 调用方法
 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  ILogin log = (ILogin)ac.getBean("loginproxy");
 该节点所得到的结果是一个接口 ,不是ProxyFactoryBean类
********************************************************************************************
 Aop 中 ThrowsAdvice 接口的实现
 步骤同上面,只是将继承Aop接口的拦截类实现的接口改成 ThrowsAdvice 接口
 在 类中 实现方法 afterThrowing (【Method】 method,【Object[]】 args,【Object】 target, Exception e)
 import java.lang.reflect.Method; 
 注 : 带【】 的要么都存在,要么都不存在,存在的时候顺序一定要对 

********************************************************************************************
 Aop 中 afterReturnAdvice 接口的实现
 得到 返回值

********************************************************************************************

Aop 中的方法名进行拦截 同样是用<bean id="beforeAdvice" class="com.sun.demo.UserBeforeAdvice"></bean> 节点
但是不同的是 在<property name="interceptorNames">
  <value>advice</value>        -- 继承Aop接口的拦截类  <value>named</value> 
  </property>
中 要引入另一个包含UserBeforeAdvice类的节点 (是自定义的一个节点专门用来对方法名来过滤)
节点代码:
<bean id="named" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
 <property name="advice">
 <ref bean="beforeAdvice"/>
 </property>
 <property name="mappedNames">
 <list>
 <value>Add*</value>                //注意大小写
 <value>Find*</value>
 <value>Del*</value>
 </list>
 </property>
 
 </bean>

********************************************************************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息