Avatar of gudii9
gudii9
Flag for United States of America asked on

spring inheritance of bean definition

Hi,

I am running below example on "spring inheritance of bean definition"


client class looks as below
package org.gp.gpr;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;

public class DrawingAppObj {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//	Triangle triangle=new Triangle();
		//	triangle.draw();


//		BeanFactory factory=new XmlBeanFactory(new FileSystemResource("spring.xml"));
		ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
		Trianglebj trianglebj	=(Trianglebj) context.getBean("triangle1");
	//	Trianglebj trianglebj	=(Trianglebj) context.getBean("triangle-alias");
		trianglebj.draw();
	}

}

















Point class looks as below
package org.gp.gpr;

public class Point {
private int x;
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;
}
private int y;

}


Trianglebj class looks as below

package org.gp.gpr;

import java.util.List;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class Trianglebj implements ApplicationContextAware,BeanNameAware {


private Point pointA;
private Point pointB;
private Point pointC;
private ApplicationContext context=null;

	public void draw(){


	//	System.out.println(getType()+"triangle drawed"+getHeight());
	System.out.println("PointA=("+getPointA().getX()+","+getPointA().getY()+")");
	System.out.println("PointB=("+getPointB().getX()+","+getPointB().getY()+")");
	System.out.println("PointC=("+getPointC().getX()+","+getPointC().getY()+")");
		
		//for(Point point : points){
	//		
//			System.out.println(getType()+"triangle drawed"+getHeight());
//		System.out.println("Point=("+point.getX()+","+point.getY()+")");
//			System.out.println("PointB=("+getPointB().getX()+","+getPointB().getY()+")");
//		System.out.println("PointC=("+getPointC().getX()+","+getPointC().getY()+")");
	//	}
	}

	public Point getPointA() {
		return pointA;
	}

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

	@Override
	public void setApplicationContext(ApplicationContext arg0)
			throws BeansException {
		// TODO Auto-generated method stub
		this.context=context;
		
	}

	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;
	}

	@Override
	public void setBeanName(String beanName) {
		// TODO Auto-generated method stub
		System.out.println("bean name"+beanName);
		
	}

	

	
}


spring.xml looks as  below

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
<!ENTITY contextInclude SYSTEM "org/springframework/web/portlet/context/WEB-INF/contextInclude.xml">
]>

<beans>

<bean id="parenttriangle" class="org.gp.gpr.Trianglebj">
<property name="pointA" ref="pointA"/>
</bean>

<bean id="triangle1" class="org.gp.gpr.Trianglebj" parent="parenttriangle">
<property name="pointB" ref="pointB"/>
 <property name="pointC" ref="pointC"/> 
</bean>

<bean id="triangle3" class="org.gp.gpr.Trianglebj" parent="parenttriangle">
<property name="pointB" ref="pointB"/>

</bean>
<bean id="pointA" class="org.gp.gpr.Point">
<property name="x" value="0"/>
<property name="y" value="0"/>
</bean>


<bean id="pointB" class="org.gp.gpr.Point">
<property name="x" value="20"/>
<property name="y" value="0"/>
</bean>

<bean id="pointC" class="org.gp.gpr.Point">
<property name="x" value="-200"/>
<property name="y" value="0"/>
</bean>

</beans>

Open in new window


When i run client file with 'triangle1', I got output as below

Mar 27, 2013 2:19:04 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4def8cf3: startup date [Wed Mar 27 14:19:04 CDT 2013]; root of context hierarchy
Mar 27, 2013 2:19:04 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring.xml]
Mar 27, 2013 2:19:04 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@2b76e552: defining beans [parenttriangle,triangle1,triangle3,pointA,pointB,pointC]; root of factory hierarchy
bean nameparenttriangle
bean nametriangle1
bean nametriangle3
PointA=(0,0)
PointB=(20,0)
PointC=(-200,0)

when i ran client file with 'triangle3' getting null pointer exception as below

Mar 27, 2013 2:23:03 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@31d520c4: startup date [Wed Mar 27 14:23:03 CDT 2013]; root of context hierarchy
Mar 27, 2013 2:23:03 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring.xml]
Mar 27, 2013 2:23:03 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@ac980c9: defining beans [parenttriangle,triangle1,triangle3,pointA,pointB,pointC]; root of factory hierarchy
bean nameparenttriangle
bean nametriangle1
bean nametriangle3
PointA=(0,0)
PointB=(20,0)
Exception in thread "main" java.lang.NullPointerException
      at org.gp.gpr.Trianglebj.draw(Trianglebj.java:24)
      at org.gp.gpr.DrawingAppObj.main(DrawingAppObj.java:24)




my question is why i am getting NPE
Also what are, uses, purpose of 'spring inheritance of bean definition' .

Is it is same as bean inheritance.
Please advise. Any ideas, resources, sample code highly appreciated. thanks in advance
DefnInheritance1.jpg
DefnInheritance2.jpg
JavaJava EEJSP

Avatar of undefined
Last Comment
girionis

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
girionis

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
This is the best money I have ever spent. I cannot not tell you how many times these folks have saved my bacon. I learn so much from the contributors.
rwheeler23