spring+mybatis整合时占位符无法读取jdbc.properties的问题
来源:互联网 发布:网络嗅探器 安卓 编辑:程序博客网 时间:2024/05/22 06:40
这段时间在使用spring+mybatis整合时遇到了一个问题,我想引用外部jdbc.properties,然后在配置文件中使用占位符,如下:
<!--引入属性文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!--数据库连接--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass"><value>${jdbc.driverClassName}</value></property><property name="jdbcUrl"><value>${jdbc.url}</value></property><property name="user"><value>${jdbc.username}</value></property><property name="password"><value>${jdbc.password}</value></property> </bean>但是我发现出现了以下异常:
WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2] - Could not load driverClass ${jdbc.driverClassName}java.lang.ClassNotFoundException: ${jdbc.driverClassName}at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:190)at com.mchange.v2.c3p0.DriverManagerDataSource.ensureDriverLoaded(DriverManagerDataSource.java:100)at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:132)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
这个问题是无法识别占位符,就是在加载过程中直接把$(jdbc.driverClassName)当做字符串处理了。后来在网上找过问题的解决方式,是说因为配置了
<!-- 扫描接口所在的包 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xx.dao"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean>MapperScannerConfigurer 先于properties文件处理,意思是没进行占位符的变量赋值就被使用了。去掉sqlSessionFactory这个属性
<!-- 扫描接口所在的包 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xx.dao"/> </bean>同时记得加上这样的bean,id一定是这样,因为要使用的时候会去找这个bean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:config.xml" /> <property name="mapperLocations"> <value>classpath:dao/mapper/*Mapper.xml</value> </property> </bean>ps:同时注意beans 可能会配置有这个 default-autowire="byName" ,去掉即可。
0 0
- spring+mybatis整合时占位符无法读取jdbc.properties的问题
- mybatis与spring整合时读取properties问题的解决
- 关于spring整合后无法解析properties占位符的问题
- Spring和Mybatis整合时无法读取properties的处理方案
- Spring和Mybatis整合时无法读取properties的处理方案
- Spring和Mybatis整合时无法读取properties的处理方案
- Spring和Mybatis整合时无法读取properties的处理方案
- Spring和Mybatis整合时无法读取properties的处理方案
- Spring和Mybatis整合时无法读取properties的处理方案
- Spring和Mybatis整合时无法读取properties的处理方案
- 关于Spring与mybatis整合无法读取配置文件的问题
- spring读取jdbc.properties出现的问题
- Spring整合myBatis时无法读取placeholder的问题解决
- SPRING使用占位符读取字段加密的properties文件
- spring+mybatis+druid无法读取jdbc.properties属性导致datasource加载失败
- spring和mybatis整合加载jdbc.properties异常
- Spring+mybatis+maven整合过程加载配置文件jdbc.properties
- 解决“Spring 使用MapperScannerConfigurer无法读取*.properties文件"的问题
- Chapter1 《第一个简单到IOS应用》
- Hadoop 第一次无法启动
- 二分法查找的Python实现
- MAC层与llc层的区别
- 一道hash题
- spring+mybatis整合时占位符无法读取jdbc.properties的问题
- JAVA之工厂模式
- hdoj 5478 Can you find it 【找恒等式 + 快速幂】
- 项目带给我的成长
- 归并链表
- HashMap的嵌套使用
- 在函数内栈上申请大数组导致发生段错误
- python http
- 第五周