我正在尝试将 java 应用程序部署到 Heroku。
它使用环境变量(例如 postgres://foo:foo@heroku.com/hellodb)在 spring applicationcontext.xml https://devcenter.heroku.com/articles/spring-mvc-hibernate#modify_database_configuration中配置数据库
我按照文档,配置它,并设置DATABASE_URL使用set DATABASE_URL=postgres://postgres:huang@heroku.com/yan(windows)。
但是当我在本地运行它时,我得到一个错误: 在ServletContext资源[/WEB-INF/spring/applicationContext.xml]中定义名称为'dataSource'的bean:初始化bean失败; 嵌套异常是 o rg.springframework.beans.factory.BeanExpressionException: Expression parsing 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>`
似乎弹簧容器无法处理'@'符号,但我真的不知道如何处理它!我在谷歌搜索,但我得到了任何东西。
有谁知道如何处理它?谢谢!