Followers

springAOP : @After

The AspectJ after advice is applied after calling the actual business logic methods. It can be used to maintain log, security, notification etc.

Create a class that contains actual business logic.


Employee.java
==========
package com.mohan; 
public  class Employee{ 
    public void msg(){System.out.println("msg method invoked");} 
    public int m(){System.out.println("m method invoked");return 2;} 
    public int k(){System.out.println("k method invoked");return 3;} 
}

Create the aspect class that contains after advice.

TrackEmployee.java
=============

package com.mohan; 
 
import org.aspectj.lang.JoinPoint; 
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Pointcut; 
 
@Aspect 
public class TrackEmployee{ 
    @Pointcut("execution(* Employee.*(..))") 
    public void k(){}//pointcut name 
     
    @After("k()")//applying pointcut on before advice 
    public void myadvice(JoinPoint jp)//it is advice (before advice) 
    { 
        System.out.println("additional concern");         
    } 

Now create the Beans.xml file that defines beans.

Beans.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="empBean" class="com.mohan.Employee">   </bean> 
    <bean id="trackEmp" class="com.mohan.TrackEmployee"></bean> 
     
    <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"></bean> 
         
</beans> 

Now, let's call the actual method.


Test.java
======
package com.mohan; 
 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
public class Test{ 
    public static void main(String[] args){ 
        ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); 
        Employee e = (Employee) context.getBean("empBean"); 
        System.out.println("calling msg..."); 
        e.msg(); 
        System.out.println("calling m..."); 
        e.m(); 
        System.out.println("calling k..."); 
        e.k(); 
    } 
}  

Expected Output

calling msg... 
msg() method invoked 
additional concern 
calling m... 
m() method invoked 
additional concern 
calling k... 
k() method invoked 

additional concern

No comments:

Post a Comment