Skip to content

Commit 759ee7b

Browse files
committed
✨ add methodRefund advice, 增强advisor的before和returning逻辑
1 parent 08c44ee commit 759ee7b

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

src/main/java/com/dianpoint/summer/aop/MethodBeforeAdviceInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88
public class MethodBeforeAdviceInterceptor implements MethodInterceptor {
99

10-
private MethodBeforeAdvice advice;
10+
private final MethodBeforeAdvice advice;
1111

1212
public MethodBeforeAdviceInterceptor(MethodBeforeAdvice advice) {
1313
this.advice = advice;

src/main/java/com/dianpoint/summer/aop/ProxyFactoryBean.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,22 @@ public Object getObject() throws Exception {
3535

3636
private synchronized void initializeAdvisor() {
3737
Object advice = null;
38-
MethodInvocation methodInvocation = null;
38+
MethodInterceptor methodInterceptor = null;
3939
try {
4040
advice = this.beanFactory.getBean(this.interceptorName);
4141
} catch (BeansException e) {
4242
e.printStackTrace();
4343
}
44+
if (advice instanceof BeforeAdvice) {
45+
methodInterceptor = new MethodBeforeAdviceInterceptor((MethodBeforeAdvice) advice);
46+
} else if (advice instanceof AfterAdvice) {
47+
methodInterceptor = new AfterReturningAdviceInterceptor((AfterReturningAdvice) advice);
48+
} else if (advice instanceof MethodInterceptor) {
49+
methodInterceptor = (MethodInterceptor) advice;
50+
}
51+
4452
advisor = new DefaultAdvisor();
45-
advisor.setMethodInterceptor((MethodInterceptor) advice);
53+
advisor.setMethodInterceptor(methodInterceptor);
4654
}
4755

4856
@Override
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.dianpoint.summer.test.service;
2+
3+
import com.dianpoint.summer.aop.AfterReturningAdvice;
4+
5+
import java.lang.reflect.Method;
6+
7+
public class MyAfterAdvice implements AfterReturningAdvice {
8+
@Override
9+
public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
10+
System.out.println("interceptor执行结果需要打印这个");
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.dianpoint.summer.test.service;
2+
3+
import com.dianpoint.summer.aop.MethodBeforeAdvice;
4+
5+
import java.lang.reflect.Method;
6+
7+
public class MyBeforeAdvice implements MethodBeforeAdvice {
8+
@Override
9+
public void before(Method method, Object[] args, Object target) throws Throwable {
10+
System.out.println("拦截器执行之前需要打印这个");
11+
}
12+
}

src/test/resources/beans.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929

3030

3131
<!-- aop拦截器-->
32-
<bean id="myInterceptor" class="com.dianpoint.summer.test.service.TracingInterceptor"/>
3332
<bean id="realaction" class="com.dianpoint.summer.test.service.ActionOne"/>
3433
<bean id="action" class="com.dianpoint.summer.aop.ProxyFactoryBean">
3534
<property type="java.lang.Object" name="target" ref="realaction"/>

0 commit comments

Comments
 (0)