SpringAOP编程-传统基于JDK代理的AOP开发
2023-09-14 09:02:02 时间
1、spring的传统aop编程它支持的增强(advice)有五种:
1) 前置通知 目标方法执行前增强 org.springframework.aop.MethodBeforeAdvice 2) 后置通知
目标方法执行后增强 org.springframework.aop.AfterReturningAdvice
3) 环绕通知
4) 异常抛出通知
目标方法抛出异常后的增强 org.springframework.aop.ThrowsAdvice
5) 引介通知 在目标类中添加一些新的方法或属性
2、 基本jar包
1) bean
2) core
3) context
4) expression
5) aop
6)需要aop联盟的依赖jar包
3、编写目标(target)
4、增强(advice)
5、在applicationContext.xml文件中进行配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 目标target -->
<bean id="orderService" class="cn.nwtxxb.aop.OrderServiceImpl"></bean>
<!-- 通知advice -->
<bean id="orderServiceAdvice" class="cn.nwtxxb.aop.OrderHelper"></bean>
<!-- 定义切点 pointcut -->
<!-- <bean id="orderServicePointCut" class="org.springframework.aop.support.NameMatchMethodPointcut">
<property name="mappedNames">
<list>
<value>add</value>
<value>update</value>
</list>
</property>
</bean> -->
<bean id="orderServicePointCut" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="pattern" value=".*Order"></property>
</bean>
<!-- 切面aspect=pointcut+advice -->
<bean id="orderServiceAspect" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="orderServiceAdvice"/>
<property name="pointcut" ref="orderServicePointCut"/>
</bean>
<!-- 代理 proxy -->
<bean id="orderServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="orderService"/>
<property name="interceptorNames" value="orderServiceAspect"/>
<property name="proxyInterfaces" value="cn.nwtxxb.aop.IOrderService"/>
</bean>
</beans>
测试代码
相关文章
- 如何在Centos7 中安装JDK「建议收藏」
- jdk动态代理和cglib动态代理详解
- CentOS 7 yum卸载jdk、安装jdk以及配置jdk环境
- 在 Win10 系统下安装 JDK 及配置环境变量的方法
- Linux安装jdk环境
- jdk的动态代理机制_jdk动态代理
- 【RocketMq】RocketMq 高版本JDK编译报错问题处理
- Java 动态代理机制 (一) JDK Proxy详解
- JDK 17: 迎接Java的下一个时代
- 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
- Java 近期新闻:JDK 20、新的 JEP 草案、JobRunr 6.0、GraalVM 22.3.1
- JDK 动态代理 讨债实例详解编程语言
- 使用jdk的keytool 生成CA证书的方法详解编程语言
- Linux系统下安装JDK环境指南(linux下安装jdk)
- (转)通过分析 JDK 源代码研究 Hash 存储机制详解编程语言
- Red Hat安装JDK 1.8(RPM方式)详解编程语言
- Oracle JDK版本更新路线图(oracle的jdk版本)
- Linux上JDK的快速安装指南(linux上jdk安装)
- 在Linux下安装JDK环境:步骤指南(linux安装jdk环境)
- Linux下卸载JDK的方法指南(linux下卸载jdk)
- 深入探索JDK如何链接Oracle数据库(jdk链接oracle)
- 用 Oracle JDK的优势就可以获得更好的性能(jdk.oracle)
- Oracle JDK 6新开发者的终极体验(oracle jdk 6)
- JAVA/JSP学习系列之一(JDK安装)
- 解决java查看JDK中底层源码的实现方法