我正在尝试将一个Java应用程序部署到Heroku。
它使用环境变量如postgres:// foo:foo@heroku.com/hellodb来配置spring applicationcontext.xml中的数据库https://devcenter.heroku.com/articles/spring-mvc-hibernate#modify_database_configuration
我按照文档,配置它,并设置DATABASE_URL使用设置DATABASE_URL = postgres:// postgres:huang@heroku.com/yan (windows)。
但是当我在本地运行它时,我得到一个错误: 在ServletContext资源[/WEB-INF/spring/applicationContext.xml]中创建名为'dataSource'的bean:bean的初始化失败;嵌套异常是o rg.springframework.beans.factory.BeanExpressionException:表达式解析fai LED;嵌套异常是java.lang.IllegalStateException:无法处理(64)'@'
我的春天xml是这样的:
`<bean class="java.net.URI" id="dbUrl">
<constructor-arg value="#{systemEnvironment['DATABASE_URL']}" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url"
value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + @dbUrl.getPath() }" />
<property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }" />
<property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }" />
</bean>`
似乎弹簧容器无法处理'@'符号,但我真的不知道如何处理它!我在谷歌搜索,但我得到了任何东西。
有谁知道如何处理它?谢谢!
答案 0 :(得分:0)
官方文档有错误!!!
我只删除“@”符号,它可以正常工作
这个春天的xml是这样的:
<bean class="java.net.URI" id="dbUrl">
<constructor-arg value="#{systemEnvironment['DATABASE_URL']}" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url"
value="#{ 'jdbc:postgresql://' + dbUrl.getHost() + dbUrl.getPath() }" />
<property name="username" value="#{ dbUrl.getUserInfo().split(':')[0] }" />
<property name="password" value="#{ dbUrl.getUserInfo().split(':')[1] }" />
</bean>
我会写一封信来报告此错误