不可能连DAO都没? ============================================ 读入Spring XML Dao dao = ApplicationContext.getBean("dao") dao.getSqlMapClientTemplate().insert(XXX).
spring配置里没有dao的bean?不明白什么意思
1.<bean id="testDao" class="login.dao.TestDAOImp"> <property name="sqlMapClient" ref="sqlMapClient"></property> </bean>2. public class Test { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext( "dao/beans.xml"); UserDao dao = (UserDao) ctx.getBean("userDao"); dao.query(); } }
原来是我DAO里配掉了个sqlMapClient 可以跑了,不过我加上事务控制后原来好好的DAO层又出了新的异常 我就加上了红色的部分。外加几个JAR包2009-11-16 19:18:00 [INFO]-[org.springframework.cache.ehcache.EhCacheManagerFactoryBean] Shutting down EHCache CacheManager 2009-11-16 19:18:00 [ERROR]-[org.springframework.web.context.ContextLoader] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'passPortDao' defined in ServletContext resource [/WEB-INF/classes/config/applicationContext.xml]: Cannot resolve reference to bean 'client' while setting bean property 'sqlMapClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'client': FactoryBean threw exception on object creation; nested exception is java.lang.ClassCastException: com.ibatis.sqlmap.engine.impl.SqlMapClientImpl Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'client': FactoryBean threw exception on object creation; nested exception is java.lang.ClassCastException: com.ibatis.sqlmap.engine.impl.SqlMapClientImpl Caused by: java.lang.ClassCastException: com.ibatis.sqlmap.engine.impl.SqlMapClientImpl at com.jnlan.common.interceptor.MethodCacheInterceptor.invoke(MethodCacheInterceptor.java:42) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy1.getObject(Unknown Source) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:1246) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1217) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:206) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:267) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1095) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334) 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 applicationContext.xml <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <description>系统参数</description> <property name="locations"> <list> <value>classpath:config/systeminit.properties </value> </list> </property> </bean> <!-- 配置dataSource --> <bean name="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="alias"> <value>${jdbc.alias}</value> </property> <property name="driver"> <value>${jdbc.driver}</value> </property> <property name="driverUrl"> <value>${jdbc.driverUrl}</value> </property> <property name="user"> <value>${jdbc.user}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <property name="maximumConnectionCount"> <description>最大连接数生产环境应把该值设置为50</description> <value>${jdbc.maximumConnectionCount} </value> </property> <property name="minimumConnectionCount"> <description>-最小连接数</description> <value>${jdbc.minimumConnectionCount} </value> </property> <property name="houseKeepingSleepTime"> <description>proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 </description> <value>${jdbc.houseKeepingSleepTime} </value> </property> <property name="maximumActiveTime"> <description>每次使用的最大时长(毫秒)</description> <value>${jdbc.maximumActiveTime}</value> </property> <property name="prototypeCount"> <description>在没有超过最大连接数的情况下,保留的可用的连接数。 </description> <value>${jdbc.prototypeCount}</value> </property> <property name="maximumConnectionLifetime"> <description>连接的最大生命时间(包括沉睡和执行命令的时间)。 </description> <value>${jdbc.maximumConnectionLifetime} </value> </property> <property name="overloadWithoutRefusalLifetime"> <description>满负载时,等待的时长</description> <value>${jdbc.overloadWithoutRefusalLifetime} </value> </property> <property name="simultaneousBuildThrottle"> <description>一次建链的数量,生产环境可设置为5</description> <value>${jdbc.simultaneousBuildThrottle} </value> </property> <property name="houseKeepingTestSql"> <description>当连接为空闲连接时,用此条sql语句来测试是否空闲中 </description> <value>${jdbc.houseKeepingTestSql}</value> </property> </bean> <!-- 配置ibatis --> <bean name="client" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="configLocation"> <value>classpath:config/sql-map-config.xml</value> </property>
不可能连DAO都没?
============================================
读入Spring XML
Dao dao = ApplicationContext.getBean("dao")
dao.getSqlMapClientTemplate().insert(XXX).
<property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>2.
public class Test {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"dao/beans.xml");
UserDao dao = (UserDao) ctx.getBean("userDao");
dao.query();
}
}
可以跑了,不过我加上事务控制后原来好好的DAO层又出了新的异常
我就加上了红色的部分。外加几个JAR包2009-11-16 19:18:00 [INFO]-[org.springframework.cache.ehcache.EhCacheManagerFactoryBean] Shutting down EHCache CacheManager
2009-11-16 19:18:00 [ERROR]-[org.springframework.web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'passPortDao' defined in ServletContext resource [/WEB-INF/classes/config/applicationContext.xml]: Cannot resolve reference to bean 'client' while setting bean property 'sqlMapClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'client': FactoryBean threw exception on object creation; nested exception is java.lang.ClassCastException: com.ibatis.sqlmap.engine.impl.SqlMapClientImpl
Caused by:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'client': FactoryBean threw exception on object creation; nested exception is java.lang.ClassCastException: com.ibatis.sqlmap.engine.impl.SqlMapClientImpl
Caused by:
java.lang.ClassCastException: com.ibatis.sqlmap.engine.impl.SqlMapClientImpl
at com.jnlan.common.interceptor.MethodCacheInterceptor.invoke(MethodCacheInterceptor.java:42)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy1.getObject(Unknown Source)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:1246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1217)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:206)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:267)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
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
applicationContext.xml
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<description>系统参数</description>
<property name="locations">
<list>
<value>classpath:config/systeminit.properties
</value>
</list>
</property>
</bean>
<!-- 配置dataSource -->
<bean name="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="alias">
<value>${jdbc.alias}</value>
</property>
<property name="driver">
<value>${jdbc.driver}</value>
</property>
<property name="driverUrl">
<value>${jdbc.driverUrl}</value>
</property>
<property name="user">
<value>${jdbc.user}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="maximumConnectionCount">
<description>最大连接数生产环境应把该值设置为50</description>
<value>${jdbc.maximumConnectionCount}
</value>
</property>
<property name="minimumConnectionCount">
<description>-最小连接数</description>
<value>${jdbc.minimumConnectionCount}
</value>
</property>
<property name="houseKeepingSleepTime">
<description>proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁
</description>
<value>${jdbc.houseKeepingSleepTime}
</value>
</property>
<property name="maximumActiveTime">
<description>每次使用的最大时长(毫秒)</description>
<value>${jdbc.maximumActiveTime}</value>
</property>
<property name="prototypeCount">
<description>在没有超过最大连接数的情况下,保留的可用的连接数。
</description>
<value>${jdbc.prototypeCount}</value>
</property>
<property name="maximumConnectionLifetime">
<description>连接的最大生命时间(包括沉睡和执行命令的时间)。
</description>
<value>${jdbc.maximumConnectionLifetime}
</value>
</property>
<property name="overloadWithoutRefusalLifetime">
<description>满负载时,等待的时长</description>
<value>${jdbc.overloadWithoutRefusalLifetime}
</value>
</property>
<property name="simultaneousBuildThrottle">
<description>一次建链的数量,生产环境可设置为5</description>
<value>${jdbc.simultaneousBuildThrottle}
</value>
</property>
<property name="houseKeepingTestSql">
<description>当连接为空闲连接时,用此条sql语句来测试是否空闲中
</description>
<value>${jdbc.houseKeepingTestSql}</value>
</property>
</bean>
<!-- 配置ibatis -->
<bean name="client"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configLocation">
<value>classpath:config/sql-map-config.xml</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<description>数据库事务管理</description>
<property name="dataSource" ref="dataSource" />
</bean>
<aop:config>
<aop:advisor
pointcut="execution(* com.jnlan.accmanage.BO.*BO.*(..))"
advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<bean name="passPortDao"
class="com.jnlan.accmanage.DAO.impl.PassPortImpl">
<property name="sqlMapClient" ref="client"/>
</bean>
....
去掉了<aop:config>
<aop:advisor
pointcut="execution(* com.jnlan.accmanage.BO.*BO.*(..))"
advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
完全是没问题。
加上之后就出现 sqlMapClient类型转换错误!