我有一个名为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 :(得分: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()方法获取任何值。