myBatis如何通过@Autowired方式注入多数据源

迷雾骑士 2016-05-19 10:58:35
如题:myBatis如何通过@Autowired方式注入多数据源
我在开发过程中,需要在同一个业务逻辑中同时用到2个数据源,我的数据源是通过@Autowired的方式注入的,但是同时注入2个数据源,启动tomcat 就会报错:
2016-5-19 22:19:56 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /APP_WEB threw load() exception
org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.bocom.jump.bp.service.sqlmap.SqlMap] is defined: expected single matching bean but found 2: [sqlMap, sqlMapWeb]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:779)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:686)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:120)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:603)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:144)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:993)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:897)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:125)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:355)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1317)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1076)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:387)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:377)
at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1110)
at com.bocom.jump.bp.osgi.CoreRegistryListener.bind(SourceFile:33)
at com.bocom.jump.bp.core.impl.DefaultCoreRegistry.afterPropertiesSet(SourceFile:96)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

请教各位,怎么么
...全文
554 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷雾骑士 2016-07-11
  • 打赏
  • 举报
回复
多谢paulorwys,结帖晚了,分都给你了,太感谢了。
qq_23118143 2016-05-23
  • 打赏
  • 举报
回复
路过。求大神解答。
随缘121 2016-05-22
  • 打赏
  • 举报
回复
你怎么注入的,,,还有,这个可以把数据源在配置文件中显示的设置给DAO,
foo1st 2016-05-22
  • 打赏
  • 举报
回复
引用 5 楼 paulorwys 的回复:
[quote=引用 4 楼 u010448530 的回复:] [quote=引用 2 楼 paulorwys 的回复:] 多数据源为啥不用jndi资源呢?要多少个都可以
那请问一下:tomcat怎么配置jndi?能不能贴一下具体的配置文件?[/quote] 路径:WebContent\META-INF\context.xml[/quote] 最终这些资源的定义会出现在部署(tomcat)的安装目录下的conf\server.xml文件中
foo1st 2016-05-22
  • 打赏
  • 举报
回复
引用 5 楼 paulorwys 的回复:
[quote=引用 4 楼 u010448530 的回复:] [quote=引用 2 楼 paulorwys 的回复:] 多数据源为啥不用jndi资源呢?要多少个都可以
那请问一下:tomcat怎么配置jndi?能不能贴一下具体的配置文件?[/quote] 路径:WebContent\META-INF\context.xml[/quote] 内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
<Context>
	<Resource name="jdbc/MYSQL" 
		scope="Shareable"	
		auth="Container" 
		factory="org.apache.commons.dbcp.BasicDataSourceFactory"
		type="javax.sql.DataSource" 
		driverClassName="com.mysql.jdbc.Driver" 
		url="jdbc:mysql://localhost:3306/foo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false" 
		username="root" 
		password="root" 
		maxActive="100" 
		maxIdle="20"
		maxWait="3000"
		destroy-method="close" />
		
	<Resource name="jdbc/ORACEL" 
		scope="Shareable"	
		auth="Container" 
		factory="org.apache.commons.dbcp.BasicDataSourceFactory"
		type="javax.sql.DataSource" 
		driverClassName="oracle.jdbc.driver.OracleDriver" 
		url="jdbc:oracle:thin:@192.168.0.254:1521:orcl" 
		username="orcl" 
		password="orcl" 
		maxActive="100" 
		maxIdle="20"
		maxWait="3000"
		destroy-method="close" />	
		
	<Resource name="jdbc/SQLSERVER" 
		scope="Shareable"	
		auth="Container" 
		factory="org.apache.commons.dbcp.BasicDataSourceFactory"
		type="javax.sql.DataSource" 
		driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
		url="jdbc:sqlserver://192.168.0.254:1433;DatabaseName=TEST" 
		username="sa" 
		password="sa" 
		maxActive="100" 
		maxIdle="20"
		maxWait="3000"
		destroy-method="close" />			

	<Resource
		name="myJMS/FailoverConnectionFactory"
		auth="Container"
		type="org.apache.activemq.ActiveMQConnectionFactory"
		description="JMS Connection Factory"
		factory="org.apache.activemq.jndi.JNDIReferenceFactory"
		brokerURL="failover:(tcp://localhost:61616)?initialReconnectDelay=100&maxReconnectAttempts=5"
		brokerName="localhost"
		useEmbeddedBroker="false"/>
		
	<Resource name="myJMS/ConnectionFactory"
		auth="Container"
		type="org.apache.activemq.ActiveMQConnectionFactory"
		description="JMS Connection Factory"
		factory="org.apache.activemq.jndi.JNDIReferenceFactory"
		brokerURL="tcp://localhost:61616"
		brokerName="FooActiveMQBroker"/>

	<Resource name="myJMS/MyTopic"
		auth="Container"
		type="org.apache.activemq.command.ActiveMQTopic"
		description="Foo Topic"
		factory="org.apache.activemq.jndi.JNDIReferenceFactory"
		physicalName="Foo.Topic"/>

	<Resource name="myJMS/MessageQueue"
		auth="Container"
		type="org.apache.activemq.command.ActiveMQQueue"
		description="Foo Queue"
		factory="org.apache.activemq.jndi.JNDIReferenceFactory"
		physicalName="Foo.Queue"/>		
</Context>
foo1st 2016-05-22
  • 打赏
  • 举报
回复
引用 4 楼 u010448530 的回复:
[quote=引用 2 楼 paulorwys 的回复:] 多数据源为啥不用jndi资源呢?要多少个都可以
那请问一下:tomcat怎么配置jndi?能不能贴一下具体的配置文件?[/quote] 路径:WebContent\META-INF\context.xml
迷雾骑士 2016-05-21
  • 打赏
  • 举报
回复
引用 2 楼 paulorwys 的回复:
多数据源为啥不用jndi资源呢?要多少个都可以
那请问一下:tomcat怎么配置jndi?能不能贴一下具体的配置文件?
  • 打赏
  • 举报
回复
不晓得,没见过这么玩的,坐等大神
foo1st 2016-05-19
  • 打赏
  • 举报
回复
多数据源为啥不用jndi资源呢?要多少个都可以
迷雾骑士 2016-05-19
  • 打赏
  • 举报
回复
请教各位大神,该怎么解决这个问题啊?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧