在春天获取属性对象

时间:2016-06-17 04:44:27

标签: java spring

我有一个名为xyz.properties的属性文件。现在,我可以在我的类@Component注释的类中加载此文件的单个属性,这样做非常好。

但是,我正在考虑使我的项目更加模块化,我需要将整个xyz.properties文件作为一个properties对象读取,以便我可以传递它。我怎么能这样做?

更新

现在,我正在从文件中加载单个属性,如此

我的 applicationContext.xml 有以下条目

<context:property-placeholder location="classpath:xyz.properties" order="2" ignore-unresolvable="true"/>

然后我将各自的班级作为

@Component
public class XyzConfiguration {
    @Value("${client.id}")
    private String clientId;

    @Value("${client.secret}")
    private String clientSecret;

    ...
}

我的意思是传递

现在,对于每个单独的属性,我必须在类中创建相应的字段,然后使用相应的属性名称对其进行注释。通过这样做,我使我的嵌套模块非常spring框架特定。我有一天可能会将此模块放在github上供其他人使用,他们可能会也可能不会使用spring框架。对于他们来说,通过传递必需的参数(理想情况下是Properties对象)来创建这个模块的对象会更容易,这样我的模块就可以自己获取属性。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码。

import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.core.io.ResourceLoader;
import java.util.Properties;

private String fileLocator;
private Properties prop;
private ResourceLoader resourceLoader;

 public void init() throws IOException {
        //"fileLocator" must be set as a path of file.
        final Resource resource = resourceLoader.getResource(fileLocator);

        prop = PropertiesLoaderUtils.loadProperties(resource);
    }

prop将包含属性文件中的所有值,然后您可以通过调用prop.getProperty()方法获取任何值。