Недопустимый символ во фрагменте с индексом 1: #{systemEnvironment['DATABASE_URL']} источник данных configurando в Heroku

Я следую руководству Heroku, чтобы настроить источник данных через Spring XML.

Вот руководство: https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java

Вот мой конфиг:

<bean class="java.net.URI" id="dbUrl">
    <constructor-arg value="#{systemEnvironment['DATABASE_URL']}" />
</bean>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close" lazy-init="true">
    <property name="driverClassName" value="${datasource.driverClassName}" />
    <property name="url"
        value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + ':' + @dbUrl.getPort() + @dbUrl.getPath() }" />
    <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }" />
    <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }" />
<bean/>

Вот ошибка:

BeanInstantiationException Could not instantiate bean class java.net.URI Constructor threw exception Illegal character in fragment at index 1: #{systemEnvironment['DATABASE_URL']}

Я что-то пропустил?

Заранее спасибо!

1 ответ

Решение

Я думаю, что SpEL был представлен только в Spring 3.x+; если вы хотите его использовать, вам нужно будет обновить его, к счастью для вас, Spring довольно хорошо справляется с обратной совместимостью, поэтому вам, возможно, не повезло, и вам просто нужно обновить зависимость. Вы также можете попробовать просто ${DATABASE_URL} Синтаксис, я думаю, что основной преобразователь идет до системных переменных для проверки значений.

Другие вопросы по тегам