spring 学习3-Spring AOP

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

扫描二维码关注公众号,回复: 582324 查看本文章

 

或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。

 


猜你喜欢

转载自wiselyman.iteye.com/blog/1944530