X Tutup
Skip to content

Commit 83d69cd

Browse files
committed
spring AOP test,静态普通方法名匹配切面
1 parent 3f9894a commit 83d69cd

File tree

6 files changed

+61
-2
lines changed

6 files changed

+61
-2
lines changed

spring3x-test/src/main/java/com/figer/spring/aop/NaiveWaiter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ public class NaiveWaiter implements Waiter {
44

55
@Override
66
public void greetTo(String name) {
7-
System.out.println("greet to " + name);
7+
System.out.println("waiter greet to " + name);
88
}
99

1010
@Override
1111
public void serveTo(String name) {
12-
System.out.println("serve to " + name);
12+
System.out.println("waiter serve to " + name);
1313
}
1414

1515
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.figer.spring.aop;
2+
3+
import java.lang.reflect.Method;
4+
5+
import org.springframework.aop.ClassFilter;
6+
import org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor;
7+
8+
public class PolitenessAdvitor extends StaticMethodMatcherPointcutAdvisor {
9+
private static final long serialVersionUID = 7330814669473498706L;
10+
11+
@Override
12+
public boolean matches(Method method, Class<?> targetClass) {
13+
return "greetTo".equals(method.getName());
14+
}
15+
16+
@Override
17+
public ClassFilter getClassFilter() {
18+
return new ClassFilter() {
19+
20+
@Override
21+
public boolean matches(Class<?> clazz) {
22+
return Waiter.class.isAssignableFrom(clazz);
23+
}
24+
};
25+
}
26+
27+
}

spring3x-test/src/main/java/com/figer/spring/aop/PolitenessBeforeAdvice.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class PolitenessBeforeAdvice implements MethodBeforeAdvice {
88

99
@Override
1010
public void before(Method method, Object[] args, Object target) throws Throwable {
11+
System.out.println(target.getClass().getName() + "." + method.getName());
1112
String customerName = (String)args[0];
1213
System.out.println("How are you? Mr." +customerName);
1314
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.figer.spring.aop;
2+
3+
public class Seller {
4+
public void greetTo(String name) {
5+
System.out.println("seller greet to " + name);
6+
}
7+
8+
public void serveTo(String name) {
9+
System.out.println("seller serve to " + name);
10+
}
11+
}

spring3x-test/src/test/java/com/figer/spring/aop/SpringAdviceTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ public class SpringAdviceTest {
1919
private Waiter waiterAround;
2020
@Autowired
2121
private Car transactionCar;
22+
@Autowired
23+
private Waiter waiterAdvitor;
24+
@Autowired
25+
private Seller sellerAdvitor;
2226
@Test
2327
public void testBeforeAdvice(){
2428
waiterProxy.greetTo("figer");
@@ -33,4 +37,10 @@ public void testAopAroud(){
3337
public void testAopThrowingAdvince(){
3438
transactionCar.doSomething();
3539
}
40+
41+
@Test
42+
public void testStaticMethodAdvisor(){
43+
waiterAdvitor.greetTo("John");
44+
sellerAdvitor.greetTo("Tom");
45+
}
3646
}

spring3x-test/src/test/resources/mailbeans.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,14 @@
3939
p:target-ref="car"
4040
p:proxyTargetClass="true"
4141
/>
42+
43+
<bean id="seller" class="com.figer.spring.aop.Seller"/>
44+
<bean id="politenessAdvitor" class="com.figer.spring.aop.PolitenessAdvitor" p:advice-ref="politeBeforeAdvice"/>
45+
<bean id="parent" abstract="true" class="org.springframework.aop.framework.ProxyFactoryBean"
46+
p:interceptorNames="politenessAdvitor"
47+
p:proxyTargetClass="true"
48+
/>
49+
50+
<bean id="waiterAdvitor" parent="parent" p:target-ref="naiveWaiter"/>
51+
<bean id="sellerAdvitor" parent="parent" p:target-ref="seller"/>
4252
</beans>

0 commit comments

Comments
 (0)
X Tutup