AOP 面向方面编程 笔记

本文介绍Spring框架中AOP(面向切面编程)的基本概念及其实现方式,包括如何利用Spring配置文件进行AOP的设置,实现前置通知、异常通知及方法名拦截等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

********************************************************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值