java - how to use Spring IOC with Swing -
i developing desktop application using swing, want use spring framework use ioc, , want using interface technique. getting nullpointerexception when call function instance of interface , interface implemented class in called function declared. here simple app code.
interface:
public interface iempmasterservice { public internalresultsresponse<empmaster> maintainempmaster( empmaster empmaster); } implementer class:
public class empmasterservice implements iempmasterservice { private iempmasterdao empmasterdao; public iempmasterdao getempmasterdao() { return empmasterdao; } public void setempmasterdao(iempmasterdao empmasterdao) { this.empmasterdao = empmasterdao; } @override public internalresultsresponse<empmaster> maintainempmaster( empmaster empmaster) { internalresultsresponse<empmaster> response = new internalresultsresponse<empmaster>(); //some logic her... response = getempmasterdao().maintainempmaster(request); return response; }} dao interface:
public interface iempmasterdao { internalresultsresponse<empmaster> maintainempmaster( empmasterrequest request); } class implementing dao: public class empmasterdao extends hibernatedaosupport implements iempmasterdao{ @override public internalresultsresponse<empmaster> maintainempmaster( empmasterrequest empmasterrequest) { //hibernate code goes here... return resultsresponse; } } main class:
public class empmanager extends javax.swing.jframe { private iempmasterservice empmasterservice; private static applicationcontext context; public iempmasterservice getempmasterservice() { return empmasterservice; } public void setempmasterservice(iempmasterservice empmasterservice) { this.empmasterservice = empmasterservice; } public static void main(string args[]) { context = new classpathxmlapplicationcontext(new string[]{"applicationcontext.xml"}); empmasterservice = (empmasterservice)context.getbean("empmasterservice"); } private void jbutton1actionperformed(java.awt.event.actionevent evt) { string name = jtextfield1.gettext(); string salary = jtextfield2.gettext(); empmaster empmaster = new empmaster(); empmaster.setempname(name); empmaster.setsalary(double.parsedouble(salary)); //***** getting error @ line *****// internalresultsresponse<empmaster> response = getempmasterservice().maintainempmaster(empmaster); } my applicationcontext.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" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <import resource="datasource.xml"/> <bean id="mainframe" class="org.ui.empmanager"> <property name="title"> <value>spring example</value></property> <property name="empmasterservice" ref="empmasterserviceimpl"></property> </bean> <bean id="empmasterserviceimpl" class="org.service.empmasterservice"> <property name="empmasterdao" ref="empmasterdaotarget"></property> </bean> <bean id="empmasterdaotarget" class="org.dao.empmasterdao"> <property name="hibernatetemplate" ref="matrixhibernatetemplate"/> </bean> </beans> and when click on button error getting.
exception in thread "awt-eventqueue-0" java.lang.nullpointerexception @ org.ui.empmanager.jbutton1actionperformed(empmanager.java:140) @ org.ui.empmanager.access$0(empmanager.java:132) @ org.ui.empmanager$1.actionperformed(empmanager.java:67) @ javax.swing.abstractbutton.fireactionperformed(unknown source) @ javax.swing.abstractbutton$handler.actionperformed(unknown source) @ javax.swing.defaultbuttonmodel.fireactionperformed(unknown source) @ javax.swing.defaultbuttonmodel.setpressed(unknown source) @ javax.swing.plaf.basic.basicbuttonlistener.mousereleased(unknown source) @ java.awt.component.processmouseevent(unknown source) @ javax.swing.jcomponent.processmouseevent(unknown source) @ java.awt.component.processevent(unknown source) @ java.awt.container.processevent(unknown source) @ java.awt.component.dispatcheventimpl(unknown source) @ java.awt.container.dispatcheventimpl(unknown source) @ java.awt.component.dispatchevent(unknown source) @ java.awt.lightweightdispatcher.retargetmouseevent(unknown source) @ java.awt.lightweightdispatcher.processmouseevent(unknown source) @ java.awt.lightweightdispatcher.dispatchevent(unknown source) @ java.awt.container.dispatcheventimpl(unknown source) @ java.awt.window.dispatcheventimpl(unknown source) @ java.awt.component.dispatchevent(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source) please me urgent , stuck here long time.
how creating empmanager, there bean in application xml manager, contains main method. within main method you're getting application context, , setting service bean, empmanager bean not doing in application context.
i'd recommend extracting main method different class in load application context , use getbean on ui manager. way have set ignores lot of ioc capabilities of spring directly grabbing beans application context, rather letting spring you.
this might not solve problem directly, @ least allow spring have single point of entry, , keep di in hands of spring, rather relying on set them yourself.
Comments
Post a Comment