Using @AspectJ-Style Annotations
@Component("myDependency")
public class MyDependency {
public void foo(int intValue) {
System.out.println("foo(int): " + intValue);
}
public void bar() {
System.out.println("bar()");
}
}
@Component("myBean")
public class MyBean {
private MyDependency myDependency;
public void execute() {
myDependency.foo(100);
myDependency.foo(101);
myDependency.bar();
}
@Autowired
public void setDep(MyDependency myDependency) {
this.myDependency = myDependency;
}
}
@Component
@Aspect
public class MyAdvice {
@Pointcut("execution(* com.apress.prospring3.ch7..foo*(int)) && args(intValue)")
public void fooExecution(int intValue) {
}
@Pointcut("bean(myDependency*)")
public void inMyDependency() {
}
@Before("fooExecution(intValue) && inMyDependency()")
public void simpleBeforeAdvice(JoinPoint joinPoint, int intValue) {
// Execute only when intValue is not 100
if (intValue != 100) {
System.out.println("Executing: " +
joinPoint.getSignature().getDeclaringTypeName() + " "
+ joinPoint.getSignature().getName() + " argument: " + intValue);
}
}
@Around("fooExecution(intValue) && inMyDependency()")
public Object simpleAroundAdvice(ProceedingJoinPoint pjp, int intValue) throws Throwable {
System.out.println("Before execution: " +
pjp.getSignature().getDeclaringTypeName() + " "
+ pjp.getSignature().getName()
+ " argument: " + intValue);
Object retVal = pjp.proceed();
System.out.println("After execution: " +
pjp.getSignature().getDeclaringTypeName() + " "
+ pjp.getSignature().getName()
+ " argument: " + intValue);
return retVal;
}
}
<aop:aspectj-autoproxy/> <!--inform Spring to scan for @AspectJ-style annotations--> <context:component-scan base-package="com.apress.prospring3.ch7.aspectjannotation"/>
新书推荐《JavaEE开发的颠覆者: Spring Boot实战》,涵盖Spring 4.x、Spring MVC 4.x、Spring Boot企业开发实战。
京东地址:http://item.jd.com/11894632.html
当当地址:http://product.dangdang.com/23926195.html
亚马逊地址:http://www.amazon.cn/图书/dp/B01D5ZBFUK/ref=zg_bsnr_663834051_6
淘宝地址:https://item.taobao.com/item.htm?id=528426235744&ns=1&abbucket=8#detail
或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。