Java框架spring 学习笔记(十四):注解aop操作

回见Java框架spring Boot学习笔记(十三):aop实例操作这里介绍注解aop操作

首先编写一个切入点HelloWorld.java

1 package com.example.spring;
2 
3 public class HelloWorld {
4     public void printHello(){
5         System.out.println("Hello Aop.");
6     }
7 }

 编写切面TimeHandler.java

 1 package com.example.spring;
 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 //使用@Aspect注解轻松定义切面
10 @Aspect
11 public class TimeHandler {
12 
13     // 在方法上面使用注解完成前置增强配置
14     @Before(value = "execution(* com.example.spring.HelloWorld.*(..))")
15     public void beforTime()
16     {
17         System.out.println("前置增强:CurrentTime = " + System.currentTimeMillis());
18     }
19 
20     // 在方法上面使用注解完成后置增强配置
21     @After(value = "execution(* com.example.spring.HelloWorld.*(..))")
22     public void afterTime()
23     {
24         System.out.println("后置增强:CurrentTime = " + System.currentTimeMillis());
25     }
26 
27     // 在方法上面使用注解完成环绕增强配置
28     @Around(value = "execution(* com.example.spring.HelloWorld.*(..))")
29     public void aroundTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
30         //方法之前
31         System.out.println("环绕增强:CurrentTime = " + System.currentTimeMillis());
32 
33         //执行被增强的方法
34         proceedingJoinPoint.proceed();
35 
36         //方法之后
37         System.out.println("环绕增强:CurrentTime = " + System.currentTimeMillis());
38     }
39 }

 编写配置文件aop.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:aop="http://www.springframework.org/schema/aop"
 5        xsi:schemaLocation="http://www.springframework.org/schema/beans
 6         http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
 7         http://www.springframework.org/schema/aop
 8         http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">
 9 
10     <!-- bean definition & AOP specific configuration -->
11     <!-- 1 配置对象-->
12     <bean id="helloWorld" class="com.example.spring.HelloWorld"/>
13     <bean id="timeHandler" class="com.example.spring.TimeHandler"/>
14 
15     <!-- 2 开启aop操作-->
16     <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
17 
18 </beans>

编写运行文件Application.java

 1 package com.example.spring;
 2 
 3 import org.springframework.context.support.AbstractApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 public class Application {
 7     public static void main(String[] args) {
 8         //bean配置文件所在位置 D:\IdeaProjects\spring\src\Beans.xml
 9         //使用AbstractApplicationContext容器
10         AbstractApplicationContext context = new ClassPathXmlApplicationContext("file:D:\IdeaProjects\spring\src\aop.xml");
11         //得到配置创建的对象
12         HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");
13         helloWorld.printHello();
14     }
15 }

运行输出

环绕增强:CurrentTime = 1510208830742
前置增强:CurrentTime = 1510208830742
Hello Aop.
环绕增强:CurrentTime = 1510208830750
后置增强:CurrentTime = 1510208830750
原文地址:https://www.cnblogs.com/zylq-blog/p/7809247.html