Spring-AOP解析
策略模式:选择动态代理还是CGLIB方式:
1、这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
2、AOP基本上是通过代理机制实现的
3、写好验证用户的代码,然后告诉Spring你要把这段代码加到哪几个地方(execution处),Spring就会帮你加过去,而不要你自己Copy过去
4、在与mybatis的结合中,可以通过配置AOP生成事务代理,<tx:advice>配置AOP中的通知。
<aop:advisor advice-ref="txAdvice"
pointcut-ref="interceptorPointCuts" />
4、注解的方式
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@Aspectpublic class Log { @Before("execution(* cn.sxt.service.impl.*.*(..))") public void before(){ System.out.println("-----方法执行前-----"); } @After("execution(* cn.sxt.service.impl.*.*(..))") public void after(){ System.out.println("-----方法执行后-----"); } @Around("execution(* cn.sxt.service.impl.*.*(..))") public Object aroud(ProceedingJoinPoint jp) throws Throwable{ System.out.println("环绕前"); System.out.println("签名:"+jp.getSignature()); //执行目标方法 Object result = jp.proceed(); System.out.println("环绕后"); return result; }} |
<wiz_tmp_tag class="wiz-block-scroll">
|
1
2
3
4
5
6
7
8
9
|
<bean id="log" class="cn.sxt.log.Log"/><bean id="afterLog" class="cn.sxt.log.AfterLog"/> <!--<bean id="exceptionlog" class="cn".sxt.log.ExceptionLog></bean> --><aop:config> <aop:pointcut expression="execution(* cn.sxt.service.impl.*.*(..))" id="pointcut"/> <!--<aop:advisor advice-ref="exceptionlog" pointcut-ref="pointcut"/> --> <aop:advisor advice-ref="log" pointcut-ref="pointcut"/> <aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/></aop:config> |
|
1
2
3
4
5
6
7
8
9
10
|
<bean id="userService" class="cn.sxt.service.impl.UserServiceImpl"/><bean id="log" class="cn.sxt.log.Log"/><aop:aspectj-autoproxy/><!--<aop:config>--> <!--<aop:aspect ref="log">--> <!--<aop:pointcut expression="execution(* cn.sxt.service.impl.*.*(..))" id="pointcut"/>--> <!--<aop:before method="before" pointcut-ref="pointcut"/>--> <!--<aop:after method="after" pointcut-ref="pointcut"/>--> <!--</aop:aspect>--><!--</aop:config>-->
|
Spring-AOP解析的更多相关文章
- Spring框架IOC容器和AOP解析 非常 有用
Spring框架IOC容器和AOP解析 主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面 ...
- Spring系列(五):Spring AOP源码解析
一.@EnableAspectJAutoProxy注解 在主配置类中添加@EnableAspectJAutoProxy注解,开启aop支持,那么@EnableAspectJAutoProxy到底做了什 ...
- Spring AOP源码分析(二):AOP的三种配置方式与内部解析实现
AOP配置 在应用代码中,可以通过在spring的XML配置文件applicationContext.xml或者基于注解方式来配置AOP.AOP配置的核心元素为:pointcut,advisor,as ...
- 曹工说Spring Boot源码(18)-- Spring AOP源码分析三部曲,终于快讲完了 (aop:config完整解析【下】)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- 源码解析Spring AOP的加载与生效
本次博主主要进行Spring AOP这里的解析,因为在工作中使用后,却不知道背后的实现原理并在使用的过程中发现了一些认知缺陷,所以决定写这么一篇文章以供大家参考参考,进入正题. 本次博主使用了@Asp ...
- Spring框架IOC容器和AOP解析
主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置 一.S ...
- Spring AOP中pointcut expression表达式解析
Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&am ...
- Spring AOP中pointcut expression表达式解析 及匹配多个条件
Spring中事务控制相关配置: <bean id="txManager" class="org.springframework.jdbc.datasource.D ...
- jdk动态代理与cglib代理、spring aop代理实现原理解析
原创声明:本博客来源为本人原创作品,绝非他处摘取,转摘请联系博主 代理(proxy)的定义:为某对象提供代理服务,拥有操作代理对象的功能,在某些情况下,当客户不想或者不能直接引用另一个对象,而代理对象 ...
- Spring AOP中 pointcut expression表达式解析
任意公共方法的执行: execution(public * *(..)) 任何一个以“set”开始的方法的执行: execution(* set*(..)) AccountService 接口的任意方 ...
随机推荐
- POJ3246-Balanced Lineup,好经典的题,做法和HDU-I hate it 一样~~
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Case Time Limit: 2000MS Description For ...
- BZOJ 3039: 玉蟾宫【dp】
Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R'或者' ...
- 【贪心】codeforces D. Minimum number of steps
http://codeforces.com/contest/805/problem/D [思路] 要使最后的字符串不出现ab字样,贪心的从后面开始更换ab为bba,并且字符串以"abbbb. ...
- hdu 2795线段树
#include<stdio.h> #define N 200005 int h,w,n; struct node { int x,y,max; }a]; int mmax(int e,i ...
- 如何改变linux系统的只读文件的权限
vim 编辑可以在命令模式输入 :wq! 保存退出可以用chmod 命令修改文件权限. chmod命令是非常重要的,用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限.该命令有两种用法.一 ...
- 《TCP/IP详解卷1:协议》——第6章 ICMP:Internet控制报文协议(转载)
1.引言 ICMP被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息.ICMP报文通常被IP层或更高层协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程. ICMP报 ...
- HTTP请求示例
HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成: l 请求方法URI协议/版本 l 请求头(Request Hea ...
- hdu6110(线段树+lca)
题目 http://acm.hdu.edu.cn/showproblem.php?pid=6110 分析 注意到,若干条路径的交一定也是条路径 我们可以维护一个线段树,seg[l..r]存着第l条~第 ...
- 2018 11.2 PION模拟赛
期望:100 + 50 + 30 = 180 实际:0 + 50 + 30 =80 期望:100 实际:0 数值有负数,边界应该设为-0x7f 此处 gg /* 期望的分:50+ */ ...
- Java中设置Session过期时间(Spring Boot)
1.Spring Boot: server.session.cookie.comment = #注释会话cookie. server.session.cookie.domain = #会话cookie ...