Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将spring表达式语言求值作为参数传递?_Java_Spring_Properties_Expression_Spring El - Fatal编程技术网

Java 如何将spring表达式语言求值作为参数传递?

Java 如何将spring表达式语言求值作为参数传递?,java,spring,properties,expression,spring-el,Java,Spring,Properties,Expression,Spring El,这不起作用: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:encryption="http://www.jasypt.org/schema/encryption" xsi:schema

这不起作用:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:encryption="http://www.jasypt.org/schema/encryption"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.jasypt.org/schema/encryption
                        http://www.jasypt.org/schema/encryption/jasypt-spring31-encryption-1.xsd">

    <import resource="properties/secure/jasypt-context.xml" />
    <bean name="propEnvironment" class="java.lang.String">
        <constructor-arg value="#{ systemProperties['property.environment'] ?: systemProperties['cfg.environment'] }" />
    </bean>
    <encryption:encryptable-property-placeholder 
        encryptor="configurationEncryptor"
        location="classpath:properties/#{propEnvironment}/*.properties,classpath:properties/common.properties" />

</beans>
请尝试以下格式:

<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.getPort() + @dbUrl.getPath() }"/>
    <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }"/>
    <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }"/>
</bean>

我不知道。似乎Spring希望在计算Spring之前构建属性占位符-el@Mongo-发布了一个更新的示例进行尝试,希望对您有所帮助。如果这不起作用,你能试着将'propEnvironment'字符串bean自动连接到某个组件中,看看值是否正确通过吗?我用这个结果更新了底部的问题。
2014-02-14 10:03:41,998 [main] INFO  EchoBean - local
2014-02-14 10:03:42,000 [main] INFO  EchoBean - classpath:properties/local/*.properties
2014-02-14 10:03:42,000 [main] INFO  EchoBean - blah
<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.getPort() + @dbUrl.getPath() }"/>
    <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }"/>
    <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }"/>
</bean>
<encryption:encryptable-property-placeholder 
    encryptor="configurationEncryptor"
    location="classpath:properties/#{@propEnvironment.toString()}/*.properties,classpath:properties/common.properties" />