Monday, July 22, 2013

27-Writing-Our-First-Aspect-Part-2

AopMain.java
package org.yash.watertechsol;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.yash.watertechsol.service.ShapeService;

public class AopMain {

                public static void main(String args[]){
                                ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
                               
                                ShapeService shapeService = ctx.getBean("shapeService", ShapeService.class);
                                System.out.println(shapeService.getCircle().getName());
                }
}

Circle.java
package org.yash.watertechsol.model;

public class Circle {
      private String name;

      public void setName(String name) {
            this.name = name;
      }

      public String getName() {
            return name;
      }
}

Triangle.java
package org.yash.watertechsol.model;

public class Triangle {
      private String name;

      public void setName(String name) {
            this.name = name;
      }

      public String getName() {
            return name;
      }
}

ShapeService.java
package org.yash.watertechsol.service;

import org.yash.watertechsol.model.Circle;
import org.yash.watertechsol.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;
                }
}

LoggingAspect.java
package org.yash.watertechsol.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("Advice run. Get method called");
                                }
}


Spring.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"
            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 id="triangle" class="org.yash.watertechsol.model.Triangle">
            <property name="name" value="Triangle Name"></property>
      </bean>

      <bean id="circle" class="org.yash.watertechsol.model.Circle">
            <property name="name" value="Circle Name"></property>
      </bean>

      <bean id="shapeService" class="org.yash.watertechsol.service.ShapeService" autowire="byName"/>
      <bean id="loggingAspect" class="org.yash.watertechsol.aspect.LoggingAspect"/>
     

</beans>

No comments:

Post a Comment