Here we'll have our first look at Spring annotations. We'll understand and implement the Required annotation, and we'll also learn how it's actually a BeanPostProcessor that's working behind the scenes.
org.springframework.beans.factory.annotation.Required
@Target(value={METHOD})
@Retention(value=RUNTIME)
Marks a method (typically a JavaBean setter method) as being 'required': that is, the setter method must be configured to be dependency-injected with a value.
Please do consult the javadoc for the RequiredAnnotationBeanPostProcessor class (which, by default, checks for the presence of this annotation).
*****************************************************************
package com.venkat.core;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DrawingApp {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml");
Shape shape=(Shape)factory.getBean("circleBean");
//Shape shape=(Shape)factory.getBean("triangleBean");
shape.draw();
}
}
****************************************************************
package com.venkat.core;
import org.springframework.beans.factory.annotation.Required;
public class Circle implements Shape {
private Point center;
public Point getCenter() {
return center;
}
@Required
public void setCenter(Point center) {
this.center = center;
}
@Override
public void draw() {
System.out.println("Drawing Circle......................");
System.out.println("Circle Point is (" +center.getX()+","+ center.getY() +")");
}
}
***************************************************************
package com.venkat.core;
public class Point {
private int x;
private int y;
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
***************************************************************
package com.venkat.core;
public interface Shape {
public void draw();
}
***************************************************************
package com.venkat.core;
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() +")");
}
}
*****************************************************************
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="triangleBean" class="com.venkat.core.Triangle" >
<property name="pointA" ref="zeroPoint"/>
<property name="pointB" ref="point1"/>
<property name="pointC" ref="point2"/>
</bean>
<bean id="zeroPoint" class="com.venkat.core.Point">
<property name="x" value="0"/>
<property name="y" value="0"/>
</bean>
<bean id="point1" class="com.venkat.core.Point">
<property name="x" value="10"/>
<property name="y" value="10"/>
</bean>
<bean id="point2" class="com.venkat.core.Point">
<property name="x" value="0"/>
<property name="y" value="10"/>
</bean>
<bean id="circleBean" class="com.venkat.core.Circle" >
<property name="center" ref="zeroPoint"/>
</bean>
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
</beans>
No comments:
Post a Comment