From 8458a90031ec707fe3bea7243510d1452107e30d Mon Sep 17 00:00:00 2001 From: terry <724796052@qq.com> Date: Sat, 2 Jul 2022 19:32:19 +0800 Subject: [PATCH] proxy pattern spring aop --- pom.xml | 9 ++++++++- src/main/java/proxy/spring/Main.java | 12 ++++++++++++ src/main/java/proxy/spring/Tank.java | 14 ++++++++++++++ src/main/java/proxy/spring/TimeProxy.java | 19 +++++++++++++++++++ src/main/resources/app_auto.xml | 12 ++++++++++++ 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/main/java/proxy/spring/Main.java create mode 100644 src/main/java/proxy/spring/Tank.java create mode 100644 src/main/java/proxy/spring/TimeProxy.java create mode 100644 src/main/resources/app_auto.xml diff --git a/pom.xml b/pom.xml index 8330604..bc79aee 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ org.springframework spring-context - 5.3.21 + 5.1.6.RELEASE @@ -25,5 +25,12 @@ cglib 3.3.0 + + + org.aspectj + aspectjweaver + 1.9.4 + + \ No newline at end of file diff --git a/src/main/java/proxy/spring/Main.java b/src/main/java/proxy/spring/Main.java new file mode 100644 index 0000000..fa80eb6 --- /dev/null +++ b/src/main/java/proxy/spring/Main.java @@ -0,0 +1,12 @@ +package proxy.spring; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Main { + public static void main(String[] args) { + ApplicationContext context = new ClassPathXmlApplicationContext("app_auto.xml"); + Tank tank = (Tank)context.getBean("tank"); + tank.move(); + } +} diff --git a/src/main/java/proxy/spring/Tank.java b/src/main/java/proxy/spring/Tank.java new file mode 100644 index 0000000..5b1914f --- /dev/null +++ b/src/main/java/proxy/spring/Tank.java @@ -0,0 +1,14 @@ +package proxy.spring; + +import java.util.Random; + +public class Tank { + public void move(){ + System.out.println("tank is moving..."); + try { + Thread.sleep(new Random().nextInt(10000)); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/proxy/spring/TimeProxy.java b/src/main/java/proxy/spring/TimeProxy.java new file mode 100644 index 0000000..68cdfe5 --- /dev/null +++ b/src/main/java/proxy/spring/TimeProxy.java @@ -0,0 +1,19 @@ +package proxy.spring; + +import org.aspectj.lang.annotation.After; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; + +@Aspect +public class TimeProxy { + + @Before("execution(void proxy.spring.Tank.move())") + public void before(){ + System.out.println("start time: " + System.currentTimeMillis()); + } + + @After("execution(void proxy.spring.Tank.move())") + public void end(){ + System.out.println("end time: " + System.currentTimeMillis()); + } +} diff --git a/src/main/resources/app_auto.xml b/src/main/resources/app_auto.xml new file mode 100644 index 0000000..49a5701 --- /dev/null +++ b/src/main/resources/app_auto.xml @@ -0,0 +1,12 @@ + + + + + +