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 @@
+
+
+
+
+
+