Spring 中面向AOP之一系列做法
Spring的AOP实现是通过集成AspectJ框架实现的。
想必这句话大家都知道了吧,不知道也没关系,最起码你现在知道了。
四种实现方案,接下来我们一一去揭开它的神秘的面纱.......
第一种(伪代码的形式)
经典AOP形式的:
<bean id="userDao" class="UserDaoImpl"></bean>
<bean id="service" class="UserServiceImpl">
<property name="dao" ref="userDao"></property>
</bean>
<bean id="myBefore" class="MyBeforeAdvice"></bean>
<bean id="myAfter" class="MyAfterAdvice"></bean>
<aop:config>
<aop:pointcut id="point" expression="execution(* *..biz.*.*(..))"></aop:pointcut>
<aop:advisor pointcut-ref="point" advice-ref="myBefore"></aop:advisor>
<aop:advisor pointcut-ref="point" advice-ref="myAfter"></aop:advisor>
</aop:config>
第二种(伪代码形式)
使用注解方式
@Aspect
public class MyBeforeAspect{
@Before(value="execution(* *..biz.*.*(..))")
public void before(){
System.out.println("====before===");
}
@AfterReturning(value="execution(* *..biz.*.*(..))")
public void after(){
System.out.println("=====after=====");
}
}
<bean id="stuDao" class="StudentDaoImpl"></bean>
<bean id="stuService" class="StudentService">
<property name="dao" ref="stuDao">
</bean>
<!-- 准备aop:aspectj-autoproxy-->
<bean class="MyBeforeAspect"></bean>
<aop:aspectj-autoproxy />
第三种(伪代码形式)
使用AspectJ基于xml形式
public class MyAspectJMethod{
public void myBefore(){
System.out.println("AspectJ=========before");
}
public void myAfter(){
System.out.println("AspectJ==========after");
}
}
<bean id="stuDao" class="StudentDaoImpl"></bean>
<bean id="stuBiz" class="StudentBizImpl"></bean>
<bean id="myAspectJ" class="MyAspectJMethod">
<aop:config>
<aop:pointcut id="point" expression="execution(* *..biz.*.*(..))"></aop:pointcut>
<aop:aspect ref="myAspectJ">
<aop:before method="myBefore" ponitcut-ref="point"></aop:before>
<aop:after method="myAfter" pointcut-ref="point"></aop:after>
</aop:aspect>
</aop:config>
上面配置<aop:pointcut>节点也可以放到<aop:aspect>节点内,如下:
<aop:config>
<aop:aspect ref="myAspectJ">
<aop:pointcut id="point" expression="execution(* *..biz.*.*(..))"></aop:pointcut>
<aop:before method="myBefore" ponitcut-ref="point"></aop:before>
<aop:after method="myAfter" pointcut-ref="point"></aop:after>
</aop:aspect>
</aop:config>
上述两种配置都可以实现该功能。。。。。
Spring 中面向AOP之一系列做法的更多相关文章
- Spring AOP——Spring 中面向切面编程
前面两篇文章记录了 Spring IOC 的相关知识,本文记录 Spring 中的另一特性 AOP 相关知识. 部分参考资料: <Spring实战(第4版)> <轻量级 JavaEE ...
- Spring中的AOP 专题
Caused by: java.lang.IllegalArgumentException: ProceedingJoinPoint is only supported for around advi ...
- (五)Spring 中的 aop
目录 文章目录 AOP概念 AOP原理 AOP术语 **`Spring`** 中的 **`aop`** 的操作 使用 `AspectJ` 实现 `aop` 的两种方式 AOP概念 浅理解 aop :面 ...
- Spring中的AOP
什么是AOP? (以下内容来自百度百科) 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...
- Spring中关于AOP的实践之概念
一.什么是AOP AOP:也称作面向切面编程 在分享几个概念执行我想先举个栗子(可能例子举得并不是特别恰当): 1.假如路人A走在大街上,被一群坏人绑架了: 2.警察叔叔接到报警迅速展开行动:收集情报 ...
- Spring学习笔记(四)—— Spring中的AOP
一.AOP概述 AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.O ...
- 2018.12.24 Spring中的aop演示(也就是运用aop技术实现代理模式)
Aop的最大意义是:在不改变原来代码的前提下,也不对源代码做任何协议接口要求.而实现了类似插件的方式,来修改源代码,给源代码插入新的执行代码. 1.spring中的aop演示 aop:面向方面编程.不 ...
- JavaWeb_(Spring框架)认识Spring中的aop
1.aop思想介绍(面向切面编程):将纵向重复代码,横向抽取解决,简称:横切 2.Spring中的aop:无需我们自己写动态代理的代码,spring可以将容器中管理对象生成动态代理对象,前提是我们对他 ...
- spring中的AOP 以及各种通知 配置
理解了前面动态代理对象的原理之后,其实还是有很多不足之处,因为如果在项目中有20多个类,每个类有100多个方法都需要判断是不是要开事务,那么方法调用那里会相当麻烦. spring中的AOP很好地解决了 ...
随机推荐
- mybatis中单个参数的引用
单个参数时在test条件中不能用参数名来引用,可以使用_parameter
- Webstorm 的 Tab 键怎样调整缩进值? 调节成缩进成2个空格或者4个空格
原文:https://blog.csdn.net/niexia_/article/details/78280569 需求:因为用了eslint,对代码格式很严格.统一用空格.而用tab方式会省事很多. ...
- chrome浏览器本地文件支持ajax请求的解决方法
.右键chrome的快捷键--->点击属性 .在快捷方式的选项卡的目标里末尾填上如下内容: --allow-file-access-from-files 要关闭所有的chrome打开的网页
- 可方便扩展的JIRA Rest Web API的封装调用
JIRA是一个缺陷跟踪管理系统,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域,当我们需要把第三方业务系统集成进来时,可以调用他的API. JIRA本身的A ...
- XP系统安装VS2010失败的解决方法
今天装了一个双系统,但是在XP系统上安装VS2010的时候就出现了下面的错误 于是在网上搜索各种资源,查看错误日志,网上说是office2007的原因,我也抱着试试看的态度去卸载了,可是卸载后却发现还 ...
- python3和pip3安装和问题解决
python3安装前,最好先安装下依赖包: yum install -y openssl-devel yum install -y openssl yum install -y zlib-devel ...
- Day1 Excel基本知识
1. 数据分析过程 2. 2016增强版Excel 特性 科学管理,科学决策的工具 精细化,量化分析的工具 3. Excel 学什么? 计算机解决问题的思维(抽象) 数据分析的思路与方法 掌握技巧和方 ...
- 剑指offer五十五之链表中环的入口结点
一.题目 一个链表中包含环,请找出该链表的环的入口结点. 二.思路 方法一: 假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程). ...
- 如何修复“sshd error: could not load host key”
问题:当我尝试SSH到一台远程服务器时,SSH客户端登陆失败并提示“Connection closed by X.X.X.X”.在SSH服务器那端,我看到这样的错误消息:“sshd error: co ...
- js操作符类型转换
乘法 我们来看下前面的题目: console.dir(5*"5"); console.dir(5*"a");//NaN console.dir(5*NaN);/ ...