为了账号安全,请及时绑定邮箱和手机立即绑定

如何从属性文件中读取值?

/ 猿问

如何从属性文件中读取值?

饮歌长啸 2019-08-26 09:57:55

如何从属性文件中读取值?

我在用春天。我需要从属性文件中读取值。这是内部属性文件而不是外部属性文件。属性文件可以如下所示。

some.properties ---file name. values are below.abc = abcdef = dsd
ghi = weds
jil = sdd

我需要以传统方式从属性文件中读取这些值。怎么实现呢?有没有关于spring 3.0的最新方法?


查看完整描述

3 回答

?
不负相思意

在您的上下文中配置PropertyPlaceholder:

<context:property-placeholder location="classpath*:my.properties"/>

然后你引用bean中的属性:

@Componentclass MyClass {
  @Value("${my.property.name}")
  private String[] myValues;}

编辑:更新代码以使用mutliple逗号分隔值解析属性:

my.property.name=aaa,bbb,ccc

如果这不起作用,您可以定义具有属性的bean,并手动注入和处理它:

<bean id="myProperties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="locations">
    <list>
      <value>classpath*:my.properties</value>
    </list>
  </property></bean>

和豆:

@Componentclass MyClass {
  @Resource(name="myProperties")
  private Properties myProperties;

  @PostConstruct
  public void init() {
    // do whatever you need with properties
  }}


查看完整回答
反对 回复 2019-08-26
?
潇湘沐

有各种方法可以实现同样的目标。以下是春季常用的一些方法 -

  1. 使用PropertyPlaceholderConfigurer

  2. 使用PropertySource

  3. 使用ResourceBundleMessageSource

  4. 使用PropertiesFactoryBean

    还有很多........................

假设ds.type您的属性文件中有关键字。


运用 PropertyPlaceholderConfigurer

注册PropertyPlaceholderConfigurerbean-

<context:property-placeholder location="classpath:path/filename.properties"/>

要么

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations" value="classpath:path/filename.properties" ></property></bean>

要么

@Configurationpublic class SampleConfig {
 @Bean
 public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
  return new PropertySourcesPlaceholderConfigurer();
  //set locations as well.
 }}

注册后PropertySourcesPlaceholderConfigurer,您可以访问价值 -

@Value("${ds.type}")private String attr;

运用 PropertySource

在最新版本的春天,你不需要注册PropertyPlaceHolderConfigurer使用@PropertySource,我发现了一个很好的链接,了解版本兼容性-

@PropertySource("classpath:path/filename.properties")@Componentpublic class BeanTester {
    @Autowired Environment environment; 
    public void execute() {
        String attr = this.environment.getProperty("ds.type");
    }}

运用 ResourceBundleMessageSource

注册Bean-

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
    <list>
      <value>classpath:path/filename.properties</value>
    </list>
  </property></bean>

访问价值 -

((ApplicationContext)context).getMessage("ds.type", null, null);

要么

@Componentpublic class BeanTester {
    @Autowired MessageSource messageSource; 
    public void execute() {
        String attr = this.messageSource.getMessage("ds.type", null, null);
    }}

运用 PropertiesFactoryBean

注册Bean-

<bean id="properties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="locations">
    <list>
      <value>classpath:path/filename.properties</value>
    </list>
  </property></bean>

Wire Properties实例进入您的班级 -

@Componentpublic class BeanTester {
    @Autowired Properties properties; 
    public void execute() {
        String attr = properties.getProperty("ds.type");
    }}


查看完整回答
反对 回复 2019-08-26
?
红颜莎娜

另一种方法是使用ResourceBundle。基本上你使用它的名字而不是'.properties'来获取包

private static final ResourceBundle resource = ResourceBundle.getBundle("config");

并使用此恢复任何值:

private final String prop = resource.getString("propName");


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 117 浏览
我要回答

相关问题推荐

慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信