在Spring中使用@PropertyResource访问多个属性文件

使用@PropertySourceSpring 3.1中的新注释,如何使用Environment访问多个属性文件?

目前我有:

@Controller

@Configuration

@PropertySource(

name = "props",

value = { "classpath:File1.properties", "classpath:File2.properties" })

public class TestDetailsController {

@Autowired

private Environment env;

/**

* Simply selects the home view to render by returning its name.

*/

@RequestMapping(value = "/", method = RequestMethod.GET)

public String home(Locale locale, Model model) {

String file1Name = env.getProperty("file1.name","file1.name not found");

String file2Name = env.getProperty("file2.name","file2.name not found");

System.out.println("file 1: " + file1Name);

System.out.println("file 2: " + file2Name);

return "home";

}

结果是 File1.properties中 的正确文件名,但未找到 file2.name 。如何访问 File2.properties

回答:

有两种不同的方法:第一种是在applicationContext.xml中使用PropertyPlaceHolder: beans-factory-

placeholderconfigurer

<context:property-placeholder location="classpath*:META-INF/spring/properties/*.properties"/>

要添加的名称空间是 xmlns:context="http://www.springframework.org/schema/context"

如果要在控制器中直接访问键以访问String变量,请使用:

@Value("${some.key}")

private String valueOfThatKey;

第二种方法是util:properties在您的applicationContext.xml中使用:

<util:properties id="fileA" location="classpath:META-INF/properties/a.properties"/>

<util:properties id="fileB" location="classpath:META-INF/properties/b.properties"/>

使用名称空间架构xmlns:util="http://www.springframework.org/schema/util"位置:http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util-3.0.xsd

然后在您的控制器中:

@Resource(name="fileA")

private Properties propertyA;

@Resource(name="fileB")

private Properties propertyB;

如果要从文件中获取值,请使用方法getProperty(String key)

以上是 在Spring中使用@PropertyResource访问多个属性文件 的全部内容, 来源链接: utcz.com/qa/428751.html

回到顶部