spring引入properties变量报错
通过properties配置文件配置数据源,代码如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="3" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>classpath:config/db.properties</value>
<!-- 注意路径写法,上面写法要加classpath,路径前不能有/,此下面写法properties文件要在WEB-INF目录下,路径前要有/
<value>/WEB-INF/test.properties</value> -->
</list>
</property>
</bean> <!-- 自定义数据源 -->
<bean id="dataSource" name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${db.jdbc.driverClassName}" />
<property name="url" value="${db.jdbc.url}" />
<property name="username" value="${db.jdbc.username}" />
<property name="password" value="${db.jdbc.password}" />
<!-- 配置初始化大小、最大连接数量 -->
<property name="initialSize" value="${db.initialSize}"/>
<property name="maxActive" value="${db.maxActive}"/>
<!-- 连接最大等待时间 -->
<property name="maxWait" value="${db.maxWait}" />
<property name="poolPreparedStatements" value="true" />
<property name="defaultAutoCommit" value="true" />
<!-- 连接池最大、最小空闲 -->
<property name="maxIdle" value="${db.maxIdle}" />
<property name="minIdle" value="${db.minIdle}" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${db.timeBetweenEvictionRunsMillis}" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}" />
<!-- 校验语句 -->
<property name="validationQuery" value="select 1 from dual"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="false"/>
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="stat"/>
</bean>
项目启动报错:
org.springframework.beans.TypeMismatchException。。。。
java.sql.SQLException: ${db.jdbc.driverClassName}
经查阅资料发现是此配置引起:
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xiaomu.**.dao" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
原因:
MapperScannerConfigurer自定义了bean的初始化接口,在其初始化时placeholder还未初始化,导致properties值还没注入进来而报错
解决:
MapperScannerConfigurer注入 sqlSessionFactory 的时候有两种选择一种是在spring配置的时候直接注入sqlSessionFactory对象,另一种是sqlSessionFactoryBeanName通过名字来注入bean。
故将<property name="sqlSessionFactory" ref="sqlSessionFactory" />改为<property name="sqlSessionFactoryBeanName" value="mybatisSqlSessionFactory" />即可,注意改过后value值不能使用原来的sqlSessionFactory名称,因为是通过名称注入,故使用sqlSessionFactory依然会报错。
注:sqlSessionFactoryBeanName为非必须标签,单数据源时可以不用配置
说明:
MapperScannerConfigurer作用和mappers标签作用类似,都是扫描mapper确定映射关系,mapper配置形式为:
<mappers>
<!-- sql文件配置方式一:指定文件路径位置,sql.xml文件namespace可以直接用dao名称,注意此时sql.xml文件要在resource目录下 -->
<!-- <mapper resource="mybatis/sqlmap/user/brokerinfoMapper.xml"/> -->
<!-- sql文件配置方式二:sql文件和dao接口放在同一个目录下,只需要配置sql.xml文件和接口所在包路径 ,
但是sql.xml的namespace要是dao接口的完整路径-->
<!-- <package name="com.test.web.dao"/> -->
</mappers>
参考原文地址:https://www.cnblogs.com/LionheartCGJ/p/7886423.html
spring引入properties变量报错的更多相关文章
- spring 整合Mybatis 《报错集合,总结更新》
错误:java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldExcepti ...
- spring boot 启动遇到报错:Failed to configure a DataSource
spring boot 启动遇到报错,具体如下 Description: Failed to configure a DataSource: 'url' attribute is not speci ...
- spring+hibernate整合:报错org.hibernate.HibernateException: No Session found for current thread
spring+hibernate整合:报错信息如下 org.hibernate.HibernateException: No Session found for current thread at o ...
- vue项目打包后一片空白及资源引入的路径报错解决办法
网上很多说自己的VUE项目通过Webpack打包生成的list文件,放到HBulider打包后,通过手机打开一片空白.这个主要原因是路径的问题. 1.记得改一下config下面的index.js中bu ...
- node引入bootstrap npm报错
今天node引入bootstrap npm报错 但是页面正常显示 最后发现bootstrap.min.js.map没有放在文件里 虽然不用页面中引入 另外也发现了怎么看这种错误了
- vue2.0 在main.js引入scss文件报错
在vue2.0的main.js中引入scss文件报错 原因是在 在build文件夹下的webpack.base.conf.js的rules里面添加配置 { test: /\.scss$/, loade ...
- Maven引入Hadoop依赖报错:Missing artifact jdk.tools:jdk.tools:jar:1.6
Maven引入Hadoop依赖报错:Missing artifact jdk.tools:jdk.tools:jar:1.6 原因是缺少tools.jar的依赖,tools.jar在jdk的安装目录中 ...
- spring boot中连接数据库报错500(mybatis)
spring boot中连接数据库报错500(mybatis) pom.xml中的依赖 <!-- 集成mybatis--> <dependency> <groupId&g ...
- vue-cli创建的项目中引入第三方库报错 'caller', 'calle', and 'arguments' properties may not be...
http://blog.csdn.net/sophie_u/article/details/76223978 以在vue中引入mui第三方库为例: 虽然针对vue,有单独的vue-mui库可以使用,但 ...
随机推荐
- Mybatis标签bind用法
Mybatis使用bind元素进行模糊查询,不用在乎数据库是mysql还是oracle从而提高可移植性 使用bind元素传递多个参数 public List<Student> findSt ...
- 从实例角度分析java的public、protected、private和default访问权限
一.public 同一个package 1.本类内部 public class A { public int f=1; public void m1() {} public void m2() { f ...
- 从无到有,用Nodejs+express+mongodb搭建简易登陆系统
前端处理server表示很蛋疼,初学Node,虽然感觉异常强大,但是学起来还是有些吃力的,Node是工具,它不是万能的,搭建一个系统还是需要借助其他一些工具,对于我这个没怎么接触server的前端来说 ...
- nodejs 通过nginx后出现响应慢的解决方法
最近用了nodejs搭建服务器,然后用了nginx做了反向代理,项目开发需求,没办法.但是发现了经过代理之后发现网页请求变慢了,而且是不能忍的一分钟以上. 一开始,怀疑是在nodejs那边的问题,结果 ...
- Linux 配置iso系统盘为本地yum源
Linux配置iso系统盘为本地yum源 by:授客 QQ:1033553122 1.目的 安装软件时,经常会遇到包或类库的依赖性问题,为此,我们可以通过yum命令安装软件,尽量避免出现繁琐的软件 ...
- 对Controller的单元测试
在ASP.NET MVC项目的Controller中存在逻辑代码,也需要单元测试.查阅到的资料上,有说ASP.NET MVC框架在设计时便考虑到了满足可测试性,所以相对aspx.Winform来说针对 ...
- [Android] ACTION_GET_CONTENT与ACTION_PICK的区别
参考:AndroidSDK/docs/reference/android/content/Intent 看到相关代码,对这两个参数的区别有点搞不清. 原文地址请保留http://www.cnblogs ...
- Python 数据分析基础小结
一.数据读取 1.读写数据库数据 读取函数: pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_fl ...
- As3截图转换为ByteArray传送给后台node的一种方法
最近将以前用As3+Php做的一个画板拿出来改成了As3+nodejs(expressjs4). Node: 1. 将图片存放的路径设置为静态公开的路径. app.use(express.static ...
- SQL Server 2014 新特性——内存数据库(转载)
目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 内存优化表的索引 并发能力的提升 和竞争对手相比几点 ...