12.Spring AOP配置与应用

  1. 两种方式:

a)     使用Annotation

b)     使用xml

  1. Annotation

a)     加上对应的xsd文件spring-aop.xsd

b)     beans.xml <aop:aspectj-autoproxy />

c)     此时就可以解析对应的Annotation了

d)     建立我们的拦截类

e)     用@Aspect注解这个类

f)      建立处理方法

g)     用@Before来注解方法

h)     写明白切入点(execution …….)

i)      让spring对我们的拦截器类进行管理@Component

  1. 常见的Annotation:

a)     @Pointcut  切入点声明 以供其他方法使用 , 例子如下:

 1 @Aspect
2 @Component
3 public class LogInterceptor {
4
5 @Pointcut("execution(public * com.bjsxt.dao..*.*(..))")
6 public void myMethod(){}
7
8 @Around("myMethod()")
9 public void before(ProceedingJoinPoint pjp) throws Throwable{
10 System.out.println("method before");
11 pjp.proceed();
12 }
13 @AfterReturning("myMethod()")
14 public void afterReturning() throws Throwable{
15 System.out.println("method afterReturning");
16 }
17 @After("myMethod()")
18 public void afterFinily() throws Throwable{
19 System.out.println("method end");
20 }
21 }

@Pointcut

  1. 织入点语法

a)     void !void

b)     参考文档(* ..)

如果 execution(* com.bjsxt.dao..*.*(..))中声明的方法不是接口实现 则无法使用AOP实现动态代理,此时可引入包”
cglib-nodep-2.1_3.jar” 后有spring自动将普通类在jvm中编译为接口实现类,从而打到可正常使用AOP的目的.  

  1. xml配置AOP

a)     把interceptor对象初始化

b)     <aop:config

  1. i.          <aop:aspect …..
    1. <aop:pointcut

    2. <aop:before

例子:

 1 <bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean>
2 <aop:config>
3 <!-- 配置一个切面 -->
4 <aop:aspect id="point" ref="logInterceptor">
5 <!-- 配置切入点,指定切入点表达式 -->
6 <!-- 此句也可放到 aop:aspect标签外 依然有效-->
7 <aop:pointcut
8 expression=
9 "execution(public * com.bjsxt.service..*.*(..))"
10 id="myMethod" />
11 <!-- 应用前置通知 -->
12 <aop:before method="before" pointcut-ref="myMethod" />
13 <!-- 应用环绕通知 需指定向下进行 -->
14 <aop:around method="around" pointcut-ref="myMethod" />
15 <!-- 应用后通知 -->
16 <aop:after-returning method="afterReturning"
17 pointcut-ref="myMethod" />
18 <!-- 应用抛出异常后通知 -->
19 <aop:after-throwing method="afterThrowing"
20 pointcut-ref="myMethod" />
21 <!-- 应用最终通知 -->
22 <aop:after method="afterFinily"
23 pointcut="execution(public * om.bjsxt.service..*.*(..))" />
24 </aop:aspect>
25 </aop:config>

aop-xml

12.Spring AOP配置与应用,布布扣,bubuko.com

时间: 2025-01-13 17:43:30

12.Spring AOP配置与应用的相关文章

Spring基础系列12 -- Spring AOP AspectJ

Spring基础系列12 -- Spring AOP AspectJ 转载:http://www.cnblogs.com/leiOOlei/p/3613352.html 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代码. Pointcut:注入Advice的位置,切入点,一般为某方法. Advisor:Advice和Pointcut的结合单元,以便将Advice和Pointcut分开实现灵活配置. Aspe

Spring AOP配置中的问题aop:aspectj-autoproxy

(1)对于菜鸟来说,在Spring学习中可能会遇到各种各样的问题.下面就简单的写一下,我在学习Spring AOP配置中遇到的问题吧. 一般情况下,很多人都认为我们把spring framework中的所有jar包都加入到classpath中就OK了,在学习Ioc和Aop的时候就只剩下编程了,啥都不用管了. 其实不是这样的,对于以前的版本来说,可能所有用到的包都集成在一起了,但spring 技术的不断发展和扩大.完善.最终,好多模块都分家了,比如,在学习Ioc的时候我们基本上可以使用spring

Spring AOP配置-xml

基于xml的spring AOP配置主要有几个步骤: 1.创建切面类 编写自定义增强代码(如事务处理,日志等) 2.创建service 提供连接点 3.配置切面 在配置之前,先了解一些专业术语 连接点:被拦截的方法 切入点:拦截规则(符合规则被拦截的一类方法) 通知/增强:对拦截的方法添加自定义功能 切面:就是切面类,在其中自定义通知 编写切面类 //切面类 public class AspectClazz { public void save() { System.out.println("保

spring aop配置

注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy-target-class="true"/> LoggingAspect,java package com.lingdong.spring.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotati

spring aop 配置切面,记录系统异常存入log日志

1.spring.xml(这里主要配置了抛出异常后的操作after-throwing) 需要注意的地方以黄色标注,主要是几个切入点bean配置 <!-- 激活自动代理功能 --> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- 系统服务组件的切面Bean --> <bean id="aspectService" class="com.test.http

Java--简单的Spring AOP配置以及AOP事物管理,JDK/GCLib动态代理

一.看一下简单的通过XML的AOP配置 1.首先创建一个简单的Student类 public class Student { private Integer age; private String name; public void setAge(Integer age) { this.age = age; } public Integer getAge() { System.out.println("Age : " + age); return age; } public void

spring aop配置未生效

声明一个注解 @Target({ElementType.METHOD})   @Retention(RetentionPolicy.RUNTIME)   @Documented@Order(Ordered.HIGHEST_PRECEDENCE)public @interface RequestLimit {} 配置一个切面 @Aspect@Componentpublic class RequestLimitAspect {        @Resource    private JdCloudR

spring AOP 配置

<tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="add*

spring aop配置及实现

一.编写接口代码 二.编写接口代码实现类 三.编写要实现切入的类 四.编码xml配置文件 注:<aop:before> 为前切,<aop:after>为后切 五.编写测试代码 六.测试结果如下 原文地址:http://blog.51cto.com/4923168/2114689