本文介绍了在Spring中使用@PropertyResource访问多个属性文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Spring 3.1中使用新的@PropertySource批注,如何使用环境访问多个属性文件?

Using the new @PropertySource annotation in Spring 3.1, how can you access multiple property files with 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 ?


The result is the correct file name from File1.properties, but file2.name not found. How can access File2.properties?

推荐答案

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

there are two different approaches: the first one is to use the PropertyPlaceHolder in your applicationContext.xml:beans-factory-placeholderconfigurer

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

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

如果您想直接访问控制器中的String变量,请使用:

If you want a direct access of a key to a String variable in your controller, use:

@Value("${some.key}")
private String valueOfThatKey;

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

The second approach is to use the util:properties in you 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

using the namesapce xmlns:util="http://www.springframework.org/schema/util" schemaLocations: 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)

If you want a value from the files, just use the method getProperty(String key)

这篇关于在Spring中使用@PropertyResource访问多个属性文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-19 04:25