Spring之AOP注解配置

Posted 星瑞的随笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring之AOP注解配置相关的知识,希望对你有一定的参考价值。

1、导入相应jar包

2、引入约束并配置XML文件

 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3        xmlns:aop="http://www.springframework.org/schema/aop"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd
 6         http://www.springframework.org/schema/aop
 7         http://www.springframework.org/schema/aop/spring-aop.xsd ">
 8 
 9     <!-- 1 配置对象-->
10     <bean id="book2" class="helloworld.aop.Book"></bean>
11     <bean id="mybook2" class="helloworld.aop.MyBookAuto"></bean>
12 
13      <!-- 2 配置AOP操作-->
14     <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
15 
16 </beans>

3、加上注解

MyBookAuto.class
 1 package helloworld.aop;
 2 
 3 import org.aspectj.lang.ProceedingJoinPoint;
 4 import org.aspectj.lang.annotation.After;
 5 import org.aspectj.lang.annotation.Around;
 6 import org.aspectj.lang.annotation.Aspect;
 7 import org.aspectj.lang.annotation.Before;
 8 
 9 /**
10 * 使用注解方式方式配置AOP操作
11 * */
12 @Aspect
13 public class MyBookAuto {
14 
15     @Before(value = "execution(* helloworld.aop.Book.*(..))")
16     public void beforeFn(){
17         System.out.println("前置操作");
18     }
19 
20     @After(value = "execution(* helloworld.aop.Book.*(..))")
21     public void afterFn(){
22         System.out.println("后置操作");
23     }
24 
25 //    环绕通知
26     @Around(value = "execution(* helloworld.aop.Book.*(..))")
27     public void aroundFn(ProceedingJoinPoint proceedingJoinPoint){
28         System.out.println("方法之前...");
29 
30 //        被执行的增强的方法
31         try {
32             proceedingJoinPoint.proceed();
33         } catch (Throwable throwable) {
34             throwable.printStackTrace();
35         }
36 
37         System.out.println("方法之后...");
38     }
39 
40 }

book.class

1 package helloworld.aop;
2 
3 public class Book {
4 
5     public void add(){
6         System.out.println("add执行");
7     }
8 }

测试代码:

1 //        使用注解方式方式配置AOP操作
2         ApplicationContext context2 = new ClassPathXmlApplicationContext("beans_aop2.xml");
3         Book book2 = (Book) context2.getBean("book2");
4         book2.add();

运行结果:

1 方法之前...
2 前置操作
3 add执行
4 方法之后...
5 后置操作
6 
7 Process finished with exit code 0

 

以上是关于Spring之AOP注解配置的主要内容,如果未能解决你的问题,请参考以下文章

Spring之AOP的注解配置

spring aop自动代理注解配置之二

JAVAEE框架整合技术之Spring02-AOP面向切面编程技术

JAVAEE框架整合技术之Spring02-AOP面向切面编程技术

Spring源码窥探之:注解方式的AOP原理

Spring系列之AOP实现的两种方式