Tuesday, April 24, 2012

Spring Coding To Interfaces


When using Spring for dependency injection, it's a good practice to use interfaces for referencing dependencies. In this tutorial, we'll learn how to "code to interfaces".


package com.venkat.core;


public class Circle implements Shape {


 private Point center;

 public Point getCenter() {
  return center;
 }
 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;


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;


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>
</beans>

No comments:

Post a Comment