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
Java 地图的输入值取决于spring中的环境变量_Java_Spring - Fatal编程技术网

Java 地图的输入值取决于spring中的环境变量

Java 地图的输入值取决于spring中的环境变量,java,spring,Java,Spring,我在应用程序上下文xml中声明了一个spring映射,如下所示: <map> <entry key="mykey"> <value>${${env}.userkey}</value> </entry> </map> <map> <entry key="mkey" value="#{ systemProperties['env'] + '.userkey' }" /&

我在应用程序上下文xml中声明了一个spring映射,如下所示:

<map>
    <entry key="mykey">
       <value>${${env}.userkey}</value>
    </entry> 
</map>
<map>
    <entry key="mkey" value="#{ systemProperties['env'] + '.userkey' }" />
</map>

${${env}.userkey}
然而,环境永远不能替代价值。有办法做到这一点吗

谢谢


Sean

如果您使用的是Spring 3

在Spring配置中,您可以使用,您需要的可能是:

<map>
    <entry key="mykey">
       <value>${${env}.userkey}</value>
    </entry> 
</map>
<map>
    <entry key="mkey" value="#{ systemProperties['env'] + '.userkey' }" />
</map>

如果您使用的是Spring 3

在Spring配置中,您可以使用,您需要的可能是:

<map>
    <entry key="mykey">
       <value>${${env}.userkey}</value>
    </entry> 
</map>
<map>
    <entry key="mkey" value="#{ systemProperties['env'] + '.userkey' }" />
</map>

#{systemProperties}是否支持环境变量?使用PropertyPlaceHolderConfigure有什么好处,它可以()

单元测试:

package org.test;

import static org.junit.Assert.assertEquals;
import java.util.Map;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class EnvTest {

    @Resource
    private Map<String, String> map;

    @Test
    public void testMap() throws Exception {
        assertEquals("Me", map.get("mykey"));
    }

}
package-org.test;
导入静态org.junit.Assert.assertEquals;
导入java.util.Map;
导入javax.annotation.Resource;
导入org.junit.Test;
导入org.junit.runner.RunWith;
导入org.springframework.test.context.ContextConfiguration;
导入org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@上下文配置
@RunWith(SpringJUnit4ClassRunner.class)
公营考试{
@资源
私人地图;
@试验
public void testMap()引发异常{
assertEquals(“我”,map.get(“我的钥匙”);
}
}
#{systemProperties}是否支持环境变量?使用PropertyPlaceHolderConfigure有什么好处,它可以()

单元测试:

package org.test;

import static org.junit.Assert.assertEquals;
import java.util.Map;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class EnvTest {

    @Resource
    private Map<String, String> map;

    @Test
    public void testMap() throws Exception {
        assertEquals("Me", map.get("mykey"));
    }

}
package-org.test;
导入静态org.junit.Assert.assertEquals;
导入java.util.Map;
导入javax.annotation.Resource;
导入org.junit.Test;
导入org.junit.runner.RunWith;
导入org.springframework.test.context.ContextConfiguration;
导入org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@上下文配置
@RunWith(SpringJUnit4ClassRunner.class)
公营考试{
@资源
私人地图;
@试验
public void testMap()引发异常{
assertEquals(“我”,map.get(“我的钥匙”);
}
}


我不做Spring,但那应该是EL还是什么专有的东西?如果是EL,
${env}
应该在什么范围内?请求、会话或应用程序?env可以是系统属性或环境变量。在我的测试中,我在java命令行中使用系统属性:-Denv=localAh好吧,这将是一些专有的东西。抱歉,不知道:)如果它是EL,并且
${env}
在应用程序范围内,那么
${applicationScope[env].userkey}
应该可以工作。添加信息,您正在使用的Switch Spring版本。我不做Spring,但这应该是EL还是什么专有的?如果是EL,
${env}
应该在什么范围内?请求、会话或应用程序?env可以是系统属性或环境变量。在我的测试中,我在java命令行中使用系统属性:-Denv=localAh好吧,这将是一些专有的东西。抱歉,不知道:)如果它是EL并且
${env}
在应用程序范围内,那么
${applicationScope[env].userkey}
应该可以工作。添加信息,您正在使用的witch Spring版本。该
'env'
不应该被取消引号,因为它也是一个变量吗?不,它不是var-它的键和系统属性是一个映射。它不工作。当'env=local'时,它不会第二次替换'local.userkey'。也许你可以试试{{{…}?那
'env'
不应该被取消引号,因为那也是一个变量吗?不,它不是var-它的键和
systemProperties
是一个映射。它不起作用。当“env=local”时,它不会对“local.userkey”进行第二次替换。也许您可以尝试{{{{…}?
systemProperties
不做,但
systemEnvironment
做;]属性占位符是一个很好的方法,但是,您只提供了从自定义文件读取属性的方法,没有提供环境或cmd args。根据和属性属性,属性占位符也搜索环境和系统属性。我的问题是,它与包含oauth命名空间的spring-servlet.xml不兼容。当我将其移动到另一个xml中时,它会工作。
systemProperties
不工作,但
systemEnvironment
工作;]属性占位符是一个很好的方法,但是,您只提供了从自定义文件读取属性的方法,没有提供环境或cmd args。根据和属性属性,属性占位符也搜索环境和系统属性。我的问题是,它与包含oauth命名空间的spring-servlet.xml不兼容。当我将它移动到另一个xml中时,它就工作了。