Spring AOP Example

Here is the simple code for AOP, you may require these jar files in order to execute this application.
org.springframework.core-sources-3.0.1.RELEASE-A.jar
org.springframework.beans-3.0.1.RELEASE-A.jar
com.springsource.org.aopalliance-1.0.0.jar

This code is tested in NetBeans 8.0

Method Before Advice:(MethodBeforeAdvice)
Employee.java

//Employee Class
package jclass;
public class Employee {
    
    public void display()
    {
        System.out.println("this is the method that is in employee class");
    }
    
}

badvisor.java

package jclass;

import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class badvisor implements MethodBeforeAdvice {

    @Override
    public void before(Method method, Object[] os, Object o) throws Throwable {
        System.out.println("Method name: "+method.getName());
        System.out.println("Method Modifiers: "+method.getModifiers());
        System.out.println("Lets check the Object Parameters");   
    }  
}

applicationContext.xml

<bean id="emp" class="jclass.Employee"></bean>
    <bean id="bv" class="jclass.badvisor"></bean>  
    
    <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="target" ref="emp">
        </property>
        <property name="interceptorNames">
            <list>
                <value>bv</value>
            </list>
        </property>
    </bean>

execresult.java

package jclass;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class execresult {
    public static void main(String args[])
    {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Employee emp=(Employee)ac.getBean("proxy");
        emp.display();
    }
}


After Returning Advice:(AfterReturningAdvice)
Pilot.java

package jclass;
public class Pilot {
    public void display()
    {
     System.out.println("This message is from Pilot! Everyone Evacuate now!!!!");   
    }
}

afteradvisor.java

package jclass;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class afteradvisor implements AfterReturningAdvice {

    @Override
    public void afterReturning(Object o, Method method, Object[] os, Object o1) throws Throwable {
        System.out.println("After Returning Advice: Everyone Evacuated");
    } 
}

applicationContext.xml

<bean id="pilot" class="jclass.Pilot"></bean>
    <bean id="ara" class="jclass.afteradvisor"></bean>
    
    <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="target" ref="pilot"/>
            <property name="interceptorNames">
                <list>
                    <value>ara</value>
                </list>
            </property>
    </bean>

execResult.java

package jclass;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class execResult {
    public static void main(String args[])
    {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Pilot p=(Pilot)ac.getBean("proxy");
        p.display();
    }
    
}


Around Advice:(MethodInterceptor)

Admin.java

package jclass;
public class Admin {
    public void display()
    {
        System.out.println("Message from Admin: This weekend we have maintenace, kindly save your work");
    }
}

aroundadvisor.java

package jclass;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class aroundadvisor implements MethodInterceptor{

    @Override
    public Object invoke(MethodInvocation mi) throws Throwable 
    {
        Object obj;
        System.out.println("Method in Around Advisor Before Actual Admin Execution");
        obj=mi.proceed();
        System.out.println("Method in Around Advisor After Admin Execution");
        return obj;
    }
}

applicationContext.xml

<bean id="admin" class="jclass.Admin"/>
<bean id="aa" class="jclass.aroundadvisor"/>

<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target" ref="admin"/>
    <property name="interceptorNames">
        <list>
            <value>aa</value>
        </list>
    </property>
</bean>

execResult.java

package jclass;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class execResult {
    public static void main(String args[])
    {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Admin a=(Admin)ac.getBean("proxy");
        a.display();   
    }  
}


ThrowsAdvice:

package jclass;
public class check {
    public void checkage(int n)throws Exception
    {
        if(n>18)
        {
            System.out.println("you are eligible to vote");
        }
        else
        {
            System.out.println("you cant vote");
        }
    }
    
}

throwadvisor.java

package jclass;
import org.springframework.aop.ThrowsAdvice;
public class throwadvisor implements ThrowsAdvice {
    public void afterThrowing(Exception e)
    {
        System.out.println("exceptions");
    }       
    
}

applicationContext.xml

<bean id="check" class="jclass.check"/>
<bean id="ta" class="jclass.throwadvisor"/>

<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target" ref="check"/>
    <property name="interceptorNames">
        <list>
            <value>ta</value>
        </list>
    </property>
</bean>

execResult.java

package jclass;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class execResult {
     public static void main(String args[])
    {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        check ck=(check)ac.getBean("proxy");
        try
        {
        ck.checkage(22);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

 

By Sri

Leave a Reply

Your email address will not be published. Required fields are marked *