请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

xml导入properties文件报异常:Could not load JDBC driver class [${jdbc.driver}]

突然遇上一个很奇怪的问题

applicationContext-dao.xml在创建dataSource时无法使用表达式${jdbc.driver}

tomcat在启动时会报一大段异常(异常信息放在问题的底部了)

===================

但假如在xml写死就不会有问题

//img1.sycdn.imooc.com//szimg/5af287c50001dae107690118.jpg

===================

最让我觉得奇怪的是,明明第一天properties用得好好的,结果第二天莫名奇妙出现这样的错误

去网上查了查,找到大多是这样的解答:

    将<property name="sqlSessionFactory" ref="sqlSessionFactory"/>

    改成<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

    记住ref要改成value 

    原因分析:是因为配置了class="org.mybatis.spring.mapper.MapperScannerConfigurer",而这句代码会在数据源加载前就执行了,之后就把表达式${jdbc.driverClassName}当成字符串执行了。


不过很遗憾,我就是这么配置的,所以这条解答对我没用......


想请教老师,请问您碰到过这样的问题吗?


异常信息(只复制了部分):

Caused by: java.lang.IllegalStateException: Could not load JDBC driver class [${jdbc.driver}]

at org.springframework.jdbc.datasource.DriverManagerDataSource.setDriverClassName(DriverManagerDataSource.java:130)

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.springframework.beans.BeanWrapperImpl$BeanPropertyHandler.setValue(BeanWrapperImpl.java:332)

at org.springframework.beans.AbstractNestablePropertyAccessor.processLocalProperty(AbstractNestablePropertyAccessor.java:458)

... 38 more

Caused by: java.lang.ClassNotFoundException: ${jdbc.driver}

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291)

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at org.springframework.jdbc.datasource.DriverManagerDataSource.setDriverClassName(DriverManagerDataSource.java:127)

... 44 more


正在回答 回答被采纳积分+3

1回答

源生活 2018-05-09 14:08:18

除了你说的这个原因,可能properties文件没有生效

0 回复 有任何疑惑可以回复我~
  • 提问者 夫子缪 #1
    折腾一中午 终于找到原因 因为用SVN还原过一次,
    之前的版本里 web.xml加载的是applicationContext-*.xml 所有导致没有经过加载properties文件的过程,
    真是被自己蠢死了...
    ------------------------
    另外还有个问题想问老师
    以前我看SSM整合的时候 在web.xml里
    要给spring和springMVC分别配置
    如spring要配监听器——ContextLoaderListener,
    而springMVC要配分发器——DispatcherServlet,
    但老师只用了一个DispatcherServlet就能搞定。
    
    Q:那么ContextLoaderListener这个类是不是spring单独使用的时候才会用到(比如传统的struts2+spring+hibernate混用),
    上述分开来的配置方法是否没有意义?
    回复 有任何疑惑可以回复我~ 2018-05-09 16:29:43
  • 源生活 回复 提问者 夫子缪 #2
    你问巧了,这个视频后面会用到你说的监听器来加载spring的另一个上下文,两者有什么区别视频中也有提到,没你总结的这么刻板,还是根据需要,如果积木只能按一种方式拼,那还叫积木吗?
    回复 有任何疑惑可以回复我~ 2018-05-09 16:35:02
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号