spring+mybatis 数据源读取不到配置文件的值
来源:互联网 发布:apache启动不了的原因 编辑:程序博客网 时间:2024/06/05 04:54
最近在搭建maven + springmvc + spring + mybatis + mysql 过程中遇到一个问题(tomcat启动的时候报异常
java.lang.IllegalStateException: Could not load JDBC driver class [${jdbc_driverClassName}])经过查询相关资料最后解决,解决如下:
开始我的application.xml中配置如下:
<!-- 引入jdbc配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:/jdbc.properties</value>
<!--要是有多个配置文件,只需在这里继续添加即可 -->
</list>
</property>
</bean>
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 不使用properties来配置
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/weizl" />
<property name="username" value="root" />
<property name="password" value="123456" />-->
<!-- 使用properties来配置 -->
<property name="driverClassName" value="${jdbc_driverClassName}" />
<property name="url" value="${jdbc_url}"/>
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
</bean>
<!-- 配置Mybatis的文件 ,mapperLocations配置**Mapper.xml文件位置,configLocation配置mybatis-config文件位置-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:com/wzl/mapper/*.xml"/>
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
</bean>
<!-- 自动扫描了所有的XxxxMapper.xml对应的mapper接口文件,这样就不用一个一个手动配置Mpper的映射了,只要Mapper接口类和Mapper映射文件对应起来就可以了。 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.wzl.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
引起问题的原因是由于MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了
解决方法修改为如下配置:
<!-- 引入jdbc配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:/jdbc.properties</value>
<!--要是有多个配置文件,只需在这里继续添加即可 -->
</list>
</property>
</bean>
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 不使用properties来配置
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/weizl" />
<property name="username" value="root" />
<property name="password" value="123456" />-->
<!-- 使用properties来配置 -->
<property name="driverClassName" value="${jdbc_driverClassName}" />
<property name="url" value="${jdbc_url}"/>
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
</bean>
<!-- 配置Mybatis的文件 ,mapperLocations配置**Mapper.xml文件位置,configLocation配置mybatis-config文件位置-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:com/wzl/mapper/*.xml"/>
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
</bean>
<!-- 自动扫描了所有的XxxxMapper.xml对应的mapper接口文件,这样就不用一个一个手动配置Mpper的映射了,只要Mapper接口类和Mapper映射文件对应起来就可以了。 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.wzl.dao" />
<property name="sqlSessionFactoryBeanName" value="sessionFactory" />
</bean>
说明:使用sqlSessionFactoryBeanName注入,不会立即初始化sqlSessionFactory, 所以不会引发提前初始化问题,同时还应注意在配置org.mybatis.spring.SqlSessionFactoryBean
这个Bean时,id不能为sqlSessionFactory,如果为这样的话会导致MapperScannerConigurer在bean定义加载时,加载PropertyPlaceholderConfigurer还没来得及替换定义中的变量
- spring+mybatis 数据源读取不到配置文件的值
- 基于maven管理的项目中spring+mybatis配置数据源读取不到properties属性文件的问题
- 解决整合spring和mybatis后数据源配置文件读取错误,错误提示数据库用户名密码错误。
- spring mybatis整合读取配置文件
- spring boot mybatis 读取配置文件
- spring boot mybatis 读取配置文件
- @value读取不到数据库配置文件里的值的解决办法
- 关于Spring与mybatis整合无法读取配置文件的问题
- mybatis的配置文件的读取
- spring xml配置文件中指定的xsd文件读取不到了org.xml.sax.SAXParseException:
- spring+mybatis整合读取不了配置文件
- Properties配置文件读取不到
- Spring配置文件所有类型的数据源dataSource
- Spring配置文件所有类型的数据源dataSource
- Spring的数据源引用问题,拆分配置文件
- spring+springmvc+mybatis的配置文件
- spring整合mybatis的配置文件
- Spring+SpringMVC+MyBatis数据源的配置
- UIScrollView的滑动方向判断
- html 图片预览
- JS原型与原型链终极详解
- 在线实时大数据平台Storm本地模式运行的一个小发现
- 表单form中<button>提交表单
- spring+mybatis 数据源读取不到配置文件的值
- AngularJS所有版本下载
- C++---函数内联
- 0052 二叉搜索树线索化为双向链表
- Hadoop基础知识---之YARN原理简述
- 报错:failed to get the task for process XXX(解决方案)
- 欢迎使用CSDN-markdown编辑器
- 数据仓库数据分层
- 在网页中使用js简单的实现弹出菜单,请高手飘过