File: Main.java
import java.lang.reflect.Method; import org.springframework.aop.Advisor; import org.springframework.aop.ClassFilter; import org.springframework.aop.MethodBeforeAdvice; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.ComposablePointcut; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.StaticMethodMatcher; public class Main { public static void main(String[] args) { SampleBean target = new SampleBean(); ComposablePointcut pc = new ComposablePointcut(ClassFilter.TRUE, new GetterMethodMatcher()); pc.intersection(new GetAgeMethodMatcher()); SampleBean proxy = getProxy(pc, target); testInvoke(proxy); } private static SampleBean getProxy(ComposablePointcut pc, SampleBean target) { Advisor advisor = new DefaultPointcutAdvisor(pc, new SimpleBeforeAdvice()); ProxyFactory pf = new ProxyFactory(); pf.setTarget(target); pf.addAdvisor(advisor); return (SampleBean) pf.getProxy(); } private static void testInvoke(SampleBean proxy) { proxy.getAge(); proxy.getName(); proxy.setName("QQQ"); } } class GetterMethodMatcher extends StaticMethodMatcher { public boolean matches(Method method, Class cls) { return (method.getName().startsWith("get")); } } class GetAgeMethodMatcher extends StaticMethodMatcher { public boolean matches(Method method, Class cls) { return "getAge".equals(method.getName()); } } class SampleBean { public String getName() { return "AAA"; } public void setName(String name) { } public int getAge() { return 100; } } class SimpleBeforeAdvice implements MethodBeforeAdvice { public void before(Method method, Object[] args, Object target) throws Throwable { System.out.println("Before method " + method); } }
28.4.XML Bean | ||||
28.4.1. | XML Bean Injection with namespace | ![]() | ||
28.4.2. | BeanName Aware | ![]() | ||
28.4.3. | XML Based Bean Configuration | ![]() | ||
28.4.4. | Required Property Not Set Exception | ![]() | ||
28.4.5. | Method Loopup | ![]() | ||
28.4.6. | Local Reference | ![]() | ||
28.4.7. | Inheritance Demo | ![]() | ||
28.4.8. | Get Method By Name | ![]() | ||
28.4.9. | Factory Object Integration | ![]() | ||
28.4.10. | Spring factory method | ![]() | ||
28.4.11. | Factory Bean Demo | ![]() | ||
28.4.12. | Autowiring | ![]() | ||
28.4.13. | Annotation Component | ![]() | ||
28.4.14. | Annotated Autowiring | ![]() | ||
28.4.15. | Alias Bean Demo | ![]() | ||
28.4.16. | After Returning Advice Demo | ![]() |