java - Autowiring More than One DataSource in Spring -


i have autowired 1 datasource dao class (spring 3.0), i.e.:

@component public class mydao {      private namedparameterjdbctemplate template;      @autowired     @qualifier("datasource")     public void setdatasource(datasource ds) {       template = new namedparameterjdbctemplate(ds);     } } 

however, number of dao method require use datasource. augmented following class:

@component public class mydao {      private namedparameterjdbctemplate template;      @autowired     @qualifier("datasource")     public void setdatasource(datasource ds) {       template = new namedparameterjdbctemplate(ds);     }      private datasource datasource2;      @autowired     @qualifier("datasource2")     public void setdatasource2(datasource datasource2) {       this.datasource2= datasource2;     } } 

my spring bean config file:

<bean id="datasource" class="org.springframework.jndi.jndiobjectfactorybean">   <property name="jndiname" value="java:comp/env/jdbc/read" /> </bean>  <bean id="datasource2" class="org.springframework.jndi.jndiobjectfactorybean">   <property name="jndiname" value="java:comp/env/jdbc/update" /> </bean> 

having datasource autowired dao, can connect database. however, introducing second datasource result in following exception during bean creation/injection:

severe: caught exception while allowing testexecutionlistener [org.springframework.test.context.support.dependencyinjectiontestexecutionlistener@78fa39d7]   prepare test instance [pkg.namespace.myserviceimpltest@73eb904d] java.lang.illegalstateexception: failed load applicationcontext     @ org.springframework.test.context.testcontext.getapplicationcontext(testcontext.java:308)     @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.injectdependencies(dependencyinjectiontestexecutionlistener.java:109)     @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.preparetestinstance(dependencyinjectiontestexecutionlistener.java:75)     @ org.springframework.test.context.testcontextmanager.preparetestinstance(testcontextmanager.java:321)     @ org.springframework.test.context.junit4.springjunit4classrunner.createtest(springjunit4classrunner.java:211)     @ org.springframework.test.context.junit4.springjunit4classrunner$1.runreflectivecall(springjunit4classrunner.java:287)     @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:15)     @ org.springframework.test.context.junit4.springjunit4classrunner.methodblock(springjunit4classrunner.java:289)     @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:231)     @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:50)     @ org.junit.runners.parentrunner$3.run(parentrunner.java:193)     @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:52)     @ org.junit.runners.parentrunner.runchildren(parentrunner.java:191)     @ org.junit.runners.parentrunner.access$000(parentrunner.java:42)     @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:184)     @ org.springframework.test.context.junit4.statements.runbeforetestclasscallbacks.evaluate(runbeforetestclasscallbacks.java:61)     @ org.springframework.test.context.junit4.statements.runaftertestclasscallbacks.evaluate(runaftertestclasscallbacks.java:70)     @ org.junit.runners.parentrunner.run(parentrunner.java:236)     @ org.springframework.test.context.junit4.springjunit4classrunner.run(springjunit4classrunner.java:174)     @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:49)     @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:467)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:683)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:390)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:197) caused by: org.springframework.beans.factory.beancreationexception: error creating bean name 'mydao': injection of autowired dependencies failed; nested   exception org.springframework.beans.factory.beancreationexception: not autowire method: public void   pkg.namespace.mydao.setdatasource2(javax.sql.datasource); nested exception   org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [javax.sql.datasource] found dependency: expected @ least 1 bean   qualifies autowire candidate dependency. dependency annotations: {}     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues  (autowiredannotationbeanpostprocessor.java:287)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1073)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:516)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:455)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:293)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:290)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:192)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:585)     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:895)     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:425)     @ org.springframework.test.context.support.abstractgenericcontextloader.loadcontext(abstractgenericcontextloader.java:84)     @ org.springframework.test.context.support.abstractgenericcontextloader.loadcontext(abstractgenericcontextloader.java:1)     @ org.springframework.test.context.testcontext.loadapplicationcontext(testcontext.java:280)     @ org.springframework.test.context.testcontext.getapplicationcontext(testcontext.java:304)     ... 24 more caused by: org.springframework.beans.factory.beancreationexception: not autowire method: public void pkg.namespace.mydao.setdatasource2  (javax.sql.datasource); nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [javax.sql.datasource] found   dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {}     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredmethodelement.inject  (autowiredannotationbeanpostprocessor.java:593)     @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:84)     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues  (autowiredannotationbeanpostprocessor.java:284)     ... 38 more caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [javax.sql.datasource] found dependency: expected @ least   1 bean qualifies autowire candidate dependency. dependency annotations: {}     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.java:924)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:793)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:707)     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredmethodelement.inject  (autowiredannotationbeanpostprocessor.java:551)     ... 40 more 

update

as eis stated, had not updated config file test cases.

there seems nothing wrong code posted.

however, stack trace seems indicate tests still failing (in manner inconsistent code posted), guess test configuration wasn't date.


Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -