Thursday, April 26, 2012

Spring AOP


 we'll create a Spring project that forms the basis for our Aspect. This is a good refresher of some of the core Spring concepts, and it also give us an opportunity to introduce a service layer in our code that we'll build on in the subsequent tutorials
we'll implement the Logging aspect. We'll learn how to create a new Aspect using annotations and configure an advice to run before a getter method.
***************************************************************
package com.venkat.Spring.Aop.service;

import com.venkat.Spring.Aop.model.Circle;
import com.venkat.Spring.Aop.model.Triangle;

public class ShapeService {

    private Triangle triangle;
    private Circle circle;
    public Triangle getTriangle() {
        return triangle;
    }
    public void setTriangle(Triangle triangle) {
        this.triangle = triangle;
    }
    public Circle getCircle() {
        return circle;
    }
    public void setCircle(Circle circle) {
        this.circle = circle;
    }
}


*****************************************************************
package com.venkat.Spring.Aop;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.venkat.Spring.Aop.service.ShapeService;

public class AopTest {

    public static void main(String args[])
    {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        ShapeService service=context.getBean("shapeService",ShapeService.class);
        System.out.println(service.getCircle().getName());
    }
}
*******************************************************************
package com.venkat.Spring.Aop.model;

public class Circle {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
*************************************************************************
package com.venkat.Spring.Aop.model;

public class Triangle {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
****************************************************************************
package com.venkat.Spring.Aop.Aspect;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class LoggingAspect {
    @Before("execution(public String getName())")
    public void loggingAdvice()
    {
        System.out.println("Get Method..... Logging Advice is called");
    }

}
********************************************************************
<?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"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<aop:aspectj-autoproxy/>
    <bean name="triangle" class="com.venkat.Spring.Aop.model.Triangle">
    <property name="name" value="triangle name"/>
    </bean>
    <bean name="circle" class="com.venkat.Spring.Aop.model.Circle">
    <property name="name" value="circle name"/>
    </bean>
    <bean name="shapeService" class="com.venkat.Spring.Aop.service.ShapeService">
    <property name="triangle" ref="triangle"/>
    <property name="circle" ref="circle"/>
    </bean>
    <bean  name="loggingAdvice" class="com.venkat.Spring.Aop.Aspect.LoggingAspect"/>
</beans>





No comments:

Post a Comment