Monday, July 22, 2013

20-Some-JSR-250-Annotations

JSR: Java specification request that defines all the standard annotations that applies across different technologies and different frameworks. Spring support some of the JSP annotations

@Resource(name=”pointC”) -> It points to bean name pointC
@Resource -> It points to type of setter or member variable of class.

@PreConstruct -> It is used for pre initialization
@PostConstruct -> It is used for destroy where you can add some clean up code.

DrawingApp.java
package org.yash.watertechsol;

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


public class DrawingApp {
      public static void main(String[] args){
            AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
            context.registerShutdownHook();
            Shape shape = (Shape)context.getBean("circle");
            shape.draw();
      }
}


Triangle.java
package org.yash.watertechsol;


public class Triangle implements Shape{
     
      private Point pointA;
      private Point pointB;
      private Point pointC;
     
      public Point getPointA() {
            return pointA;
      }

      public void setPointA(Point pointA) {
            this.pointA = pointA;
      }

      public Point getPointB() {
            return pointB;
      }

      public void setPointB(Point pointB) {
            this.pointB = pointB;
      }

      public Point getPointC() {
            return pointC;
      }

      public void setPointC(Point pointC) {
            this.pointC = pointC;
      }

      public void draw(){
            System.out.println("Drawing Triangle");
            System.out.println("Point A = (" + getPointA().getX()+", "+getPointA().getY()+")");
            System.out.println("Point B = (" + getPointB().getX()+", "+getPointB().getY()+")");
            System.out.println("Point C = (" + getPointC().getX()+", "+getPointC().getY()+")");
      }

}

Point.java
package org.yash.watertechsol;

public class Point {
      private int x;
      private int y;
     
      public int getX() {
            return x;
      }
      public void setX(int x) {
            this.x = x;
      }
      public int getY() {
            return y;
      }
      public void setY(int y) {
            this.y = y;
      }
}

Shape.java
package org.yash.watertechsol;

public interface Shape {
      public void draw();
}

Circle.java
package org.yash.watertechsol;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;


public class Circle implements Shape {

      private Point center;

      @Override
      public void draw() {
            System.out.println("Drawing Circle");
            System.out.println("("+center.getX()+", "+center.getY()+")");
      }
     
      public Point getCenter() {
            return center;
      }
     
      @Resource(name="pointC")
      public void setCenter(Point center) {
            this.center = center;
      }
     
      @PostConstruct
      public void initCircle(){
            System.out.println("Init of Circle");
      }
     
      @PreDestroy
      public void destroyCircle(){
            System.out.println("Destroy of Circle");
      }
}

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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
           
<!-- <bean id="triangle" class="org.yash.watertechsol.Triangle">
            <property name="pointA" ref="pointA"></property>
            <property name="pointB" ref="pointB"></property>
            <property name="pointC" ref="pointC"></property>
      </bean> -->

      <bean id="circle" class="org.yash.watertechsol.Circle">
      </bean>
     
      <bean id ="pointA" class="org.yash.watertechsol.Point">
            <property name="x" value="0" />
            <property name="y" value="0" />
      </bean>
     
      <bean id ="pointB" class="org.yash.watertechsol.Point">
            <property name="x" value="-20" />
            <property name="y" value="0" />
      </bean>

      <bean id ="pointC" class="org.yash.watertechsol.Point">
            <property name="x" value="0" />
            <property name="y" value="20" />
      </bean>
     
      <context:annotation-config />


</beans>

No comments:

Post a Comment