2016-06-17 54 views
0

我有一个名为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对象)来创建此模块的对象会更容易,以便我的模块自己获取属性。

+0

你现在如何加载你的属性文件?另外,你是什么意思传递? – aksappy

回答

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()方法来获取任何值。