Spring MVC 启动tomcat database.properties文件无法初始化报Context initialization failed
database.properties文件从pom.xml中获取参数代码:database.driverClassName=${database.driverClassN...
database.properties文件从pom.xml中获取参数 代码:database.driverClassName=${database.driverClassName}程序启动时 不能从pom.xml中读取,改为database.driverClassName=com.mysql.jdbc.Driver就能正常启动。报错:java.lang.StackOverflow。没财富值了 ,大神帮忙看看吧。谢谢了
Error 展开
Error 展开
1个回答
展开全部
不知道你Properties中的适配符${database.driverClassName}中的值是从哪里获取的,或者在哪个步骤初始化赋值的。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<array>
<value>classpath:database.properties</value>
</array>
</property>
</bean>
上述代码,Spring会读取加载这个Properties文件,然后在applicationContext.xml中就可以通过${Key}获取Properties中的Value。
如你的database.properties中的database.driverClassName在spring中获取${database.driverClassName}值也是${database.driverClassName},这是个不符合数据库驱动类的值,报错无疑。
解决方法:
1.在Spring读取你这个Properties文件之前,将database.properties的适配符通过其他方式注入好,确保Spring获取到的是正确的参数,而不是${...}一段奇怪的值。
2.就将database.driverClassName=com.mysql.jdbc.Driver改为这样的。
追问
我用的是Spring MVC 框架,用Maven管理项目,${database.url}是从pom.xml中获取的,我们是小组开发项目,其他人database.url=${database.url}这样配置可以从pom.xml中获取的,可能我tomcat的jar包版本,或者maven仓库jar包有问题吧。
追答
可能是你Maven从pom.xml中获取时出现的问题,值没有成功获取到Properties,上述报的错误是java.lang.StackOverflowError,在Spring中一般是方法调用方法自己经常会报这样的错误。你用${Key}得到值后,值却还是${Key}。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询