Aspect Annotation Pointcut AroundAfter
File: context.xml
<?xml version= "1.0" encoding= "UTF-8" ?>
<beans xmlns= "http://www.springframework.org/schema/beans"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop= "http://www.springframework.org/schema/aop"
xsi:schemaLocation= "
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd" >
<bean id= "test" class = "TestBean" />
<bean class = "LoggingAspectPC" >
<property name= "beforeMessage" value= "Before %s %s" />
<property name= "afterMessage" value= "After %s %s" />
</bean>
<aop:aspectj-autoproxy />
</beans>
File: Main.java
import java.util.Arrays;
import javax.annotation.PostConstruct;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main ( String [] args ) {
ApplicationContext ac = new ClassPathXmlApplicationContext ( "context.xml" ) ;
TestBean testBean = ( TestBean ) ac.getBean ( "test" ) ;
testBean.work () ;
testBean.stop () ;
}
}
class TestBean {
public void work () {
System.out.println ( "work" ) ;
}
public void stop () {
System.out.println ( "stop" ) ;
}
}
@Aspect
class LoggingAspectPC {
private String beforeMessage;
private String afterMessage;
@Pointcut ( "execution(* TestBean.*(..))" )
private void testBeanExecution () { }
@Around ( "testBeanExecution()" )
public Object log ( ProceedingJoinPoint pjp ) throws Throwable {
System.out.println ( this .beforeMessage ) ;
System.out.println ( pjp.getSignature () .getName ()) ;
System.out.println ( Arrays.toString ( pjp.getArgs ())) ;
Object ret = pjp.proceed () ;
System.out.println ( this .afterMessage ) ;
System.out.println ( pjp.getSignature () .getName ()) ;
System.out.println ( Arrays.toString ( pjp.getArgs ())) ;
return ret;
}
@After ( "testBeanExecution()" )
public void afterCall ( JoinPoint jp ) {
System.out.println ( "After" ) ;
}
@PostConstruct
public void initialize () {
System.out.println ( "initialize:" + this .beforeMessage ) ;
System.out.println ( "initialize:" + this .afterMessage ) ;
}
public void setBeforeMessage ( String beforeMessage ) {
this .beforeMessage = beforeMessage;
}
public void setAfterMessage ( String afterMessage ) {
this .afterMessage = afterMessage;
}
}
Spring-AspectAnnotationPointcutAroundAfter.zip( 4,650 k)
Related examples in the same category