首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertiesFactoryBean vs @PropertySource

PropertiesFactoryBean vs @PropertySource
EN

Stack Overflow用户
提问于 2015-04-16 16:34:27
回答 1查看 4.2K关注 0票数 1

我只需要在类menu.properties中读取MyServiceImpl.java文件,这些值不是特定于环境的。

代码语言:javascript
复制
menu.properties
----------------
menu.option=option1,option2,option3

1)使用@PropertySource

代码语言:javascript
复制
@Configuration
@ComponentScan(basePackages = { "com.test.*" })
@PropertySource("classpath:menu.properties")
public class MyServiceImpl{

    @Autowired
    private Environment env;
    public List<String> createMenu(){
       String menuItems = env.getProperty("menu.option");
...}
}

2)如何在MyServiceImpl.java中访问下面的bean

代码语言:javascript
复制
<bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="location" value="classpath:menu.properties"/>
</bean>

我需要遵循哪种方法,PropertiesFactoryBean和PropertySource有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2015-04-17 00:19:32

使用环境:环境为提供属性源提供了方便的接口。这些属性可以从jvm args、系统变量、属性文件等中加载。使用env提供了更好的抽象IMHO。

如果有选择,我更喜欢Environment,因为它提供了更好的抽象。与明天可以从jvm参数或系统变量加载的属性文件不同,接口将保持不变。

回答你的第二个问题(我也提供了简短的表格)。

长表:

代码语言:javascript
复制
<bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="location" value="classpath:menu.properties"/>
</bean>

简写:

代码语言:javascript
复制
<util:properties id="properties" location="classpath:menu.properties"/>

public class MyServiceImpl{

    @Autowired
    private Properties properties;
    public List<String> createMenu(){
       String menuItems = properties.getProperty("menu.option");
...}
}

第三选择

如果要直接读取属性,如果没有特定于环境的属性,我建议使用注册<context:property-placeholder>的PropertySourcesPlaceholderConfigurer。

代码语言:javascript
复制
<context:property-placeholder location="classpath:menu.properties" />

如果您如上声明,您可以使用@value注释直接读取以下值。

代码语言:javascript
复制
public class MyServiceImpl{

    @value("${menu.option}")
    String menuItems;

    public List<String> createMenu(){
       //use items directly;
...}

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29680894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档