- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只需要读取MyServiceImpl.java类中的menu.properties文件这些值不是特定于环境的。
menu.properties
----------------
menu.option=option1,option2,option3
1)使用@PropertySource
@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
<bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:menu.properties"/>
</bean>
我需要遵循哪种方法?PropertiesFactoryBean 和 PropertySource 之间有什么区别?
最佳答案
使用环境:环境提供了方便的接口(interface)来提供属性源。可以从 jvm 参数、系统变量、属性文件等加载属性。恕我直言,使用 env 提供了更好的抽象。
如果有一个选择,我更愿意 Environment
因为它提供了更好的抽象。接口(interface)将保持不变,而不是明天从 jvm 参数或系统变量加载属性文件。
回答你的第二个问题(我也提供了简短的形式)。
长格式:
<bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:menu.properties"/>
</bean>
简短形式:
<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。
<context:property-placeholder location="classpath:menu.properties" />
如果你按照上面的方式声明,你可以直接使用 @value
读取值注释如下。
public class MyServiceImpl{
@value("${menu.option}")
String menuItems;
public List<String> createMenu(){
//use items directly;
...}
}
关于java - PropertiesFactoryBean 与 @PropertySource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29680894/
我只需要读取MyServiceImpl.java类中的menu.properties文件这些值不是特定于环境的。 menu.properties ---------------- menu.optio
我希望公开一个 Properties Spring bean,其值已通过典型的属性扩展机制进行了扩展。我正在使用 Spring 3.1。让我离题。 给定以下属性文件: server.host=myho
我无法让 PropertyPlaceholderConfigurer 在我当前的配置中工作。在我的 applicationContext.xml 中给出以下代码块:
spring 有两种方法可以使用 propertiesfactorybean 或 propertyplaceholderconfigurer 加载属性文件。 您能解释一下它们之间的区别以及何时使用什么
我的项目有一个依赖项,它需要设置一个可由@Value 注释读取的属性对象: @Value("#{myProps['property.1']}") 要在 JavaConfig 中执行此操作,我使用以下内
我是一名优秀的程序员,十分优秀!