索引1处片段中的非法字符:Heroku上的#{systemEnvironment ['DATABASE_URL']}配置数据源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了索引1处片段中的非法字符:Heroku上的#{systemEnvironment ['DATABASE_URL']}配置数据源相关的知识,希望对你有一定的参考价值。

我正在关注Heroku的指南,通过spring xml配置我的数据源。

这是指南:https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#using-the-database_url-in-spring-with-xml-configuration

这是我的配置:

<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']}

我错过了什么吗?

提前致谢!

答案

我认为SpEL只是在Spring 3.x +中引入的;如果你想使用它,你需要更新,幸运的是你Spring相当擅长向后兼容性,所以你可能会很幸运,只需要更新依赖项。您也可以尝试使用简单的${DATABASE_URL}语法,我认为基本的解析器可以使用系统变量来检查值。

以上是关于索引1处片段中的非法字符:Heroku上的#{systemEnvironment ['DATABASE_URL']}配置数据源的主要内容,如果未能解决你的问题,请参考以下文章

我的javascript片段返回“非法字符”

线程“主”java.nio.file.InvalidPathException 中的异常:索引 2 处的非法字符 <:>:

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

使用片段中的处理程序时出现非法状态异常

在字符串中的 Y 索引处查找 X 字符并使用此信息过滤数组

如何使用 Perl 中的正则表达式匹配字符串中第 n 个索引处的字符/字母/符号/数字