使用@Value注解从配置文件中读取数组

 更新时间:2021年07月06日 10:01:16   作者:weixin_42080616  
这篇文章主要介绍了使用@Value注解从配置文件中读取数组的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@Value注解从配置文件读取数组

作用:从配置文件中取值

用法:

1.取单个值

(1)configuration.properties配置

status.notice.switch=open

(2)java文件自动注入

@Value("${status.notice.switch}")
private String statusNoticeSwitch;

2.取数组

(1)configuration.properties配置

lanwon.hospital.id=43534,234543,w353654

(2)java文件自动注入

@Value("#{'${lanwon.hospital.id}'.split(',')}")
private List<String> hospitalIdList;

使用@Value注解注入值(配置文件读取)

在 Spring 组件中使用 @Value 注解的方式,可以直接从 .properties,.yum 等配置文件获取配置信息便于实现项目的配置化运行。

1. 配置方式

1.1 使用

1、@Value("${key}")

2、@Value("#{configProperties[‘key']}") (SpEL表达式)

1.2 默认值配置

1、基础方式: ${key}:defaultvalue

2. SpEL方式:

使用 Spring Expression Language (SpEL) 设置默认值。

下面的代码标示在systemProperties属性文件中,如果没有设置 some.key 的值,my default system property value 会被设置成默认值。

@Value("#{systemProperties['some.key'] ?: 'my default system property value'}")
private String spelWithDefaultValue;

2. 使用场景

2.1 声明的变量

public static class FieldValueTestBean {
  @Value("#{ systemProperties['user.region'] }")
 private String defaultLocale;
}

2.2 setter 方法

public static class PropertyValueTestBean {
    private String defaultLocale;
    @Value("#{ systemProperties['user.region'] }")
    public void setDefaultLocale(String defaultLocale) {
        this.defaultLocale = defaultLocale;
    } 
}

2.3 方法

public class SimpleMovieLister {
    private MovieFinder movieFinder;
    private String defaultLocale;
    @Autowired
    public void configure(MovieFinder movieFinder,
            @Value("#{ systemProperties['user.region'] }") String defaultLocale) {
        this.movieFinder = movieFinder;
        this.defaultLocale = defaultLocale;
    }
    // ...
}

2.4 构造方法

public class MovieRecommender { 
    private String defaultLocale; 
    private CustomerPreferenceDao customerPreferenceDao; 
    @Autowired
    public MovieRecommender(CustomerPreferenceDao customerPreferenceDao,
            @Value("#{systemProperties['user.country']}") String defaultLocale) {
        this.customerPreferenceDao = customerPreferenceDao;
        this.defaultLocale = defaultLocale;
    } 
    // ...
}

3 各种属性的注入及其默认值设置

3.1 字符串

字符串类型的属性设置默认值。

@Value("${some.key:my default value}")
private String stringWithDefaultValue;

some.key 没有设置值,stringWithDefaultValue 变量值将会被设置成 my default value 。

如果默认值设为空,也将会被设置成默认值。

@Value("${some.key:}")
private String stringWithBlankDefaultValue;

3.2 基本类型

基本类型设置默认值。

@Value("${some.key:true}")
private boolean booleanWithDefaultValue;
@Value("${some.key:42}")
private int intWithDefaultValue;

3.3 包装类型

包装类型设置默认值。

@Value("${some.key:true}")
private Boolean booleanWithDefaultValue;
 
@Value("${some.key:42}")
private Integer intWithDefaultValue;

3.4 数组

数组的默认值可以使用逗号分割。

@Value("${some.key:one,two,three}")
private String[] stringArrayWithDefaults;
 
@Value("${some.key:1,2,3}")
private int[] intArrayWithDefaults;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Windows 10卸载JDK1.8超详细图文教程

    Windows 10卸载JDK1.8超详细图文教程

    这篇文章主要介绍了Windows 10卸载JDK1.8超详细图文教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 一小时迅速入门Mybatis之实体类别名与多参数 动态SQL

    一小时迅速入门Mybatis之实体类别名与多参数 动态SQL

    这篇文章主要介绍了一小时迅速入门Mybatis之实体类别名与多参数 动态SQL,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • JavaWeb页面中防止点击Backspace网页后退情况

    JavaWeb页面中防止点击Backspace网页后退情况

    当键盘敲下后退键(Backspace)后怎么防止网页后退情况呢?今天小编通过本文给大家详细介绍下,感兴趣的朋友一起看看吧
    2016-11-11
  • Spring MVC获取查询参数及路径参数代码实例

    Spring MVC获取查询参数及路径参数代码实例

    这篇文章主要介绍了Spring MVC获取查询参数及路径参数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java特性 Lambda 表达式和函数式接口

    Java特性 Lambda 表达式和函数式接口

    这篇文章主要介绍了Java特性 Lambda 表达式和函数式接口,Lambda表达式基于函数式编程思想,也可以称为闭包,是Java 8引入的重要新特性, Lambda允许把函数作为一个方法的参数
    2022-06-06
  • 浅谈java8 stream flatMap流的扁平化操作

    浅谈java8 stream flatMap流的扁平化操作

    这篇文章主要介绍了浅谈java8 stream flatMap流的扁平化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java服务cpu100%的解决过程分享

    Java服务cpu100%的解决过程分享

    最近一个任务是优化一个导出的功能,但是点击功能时发现,程序长时间无反应,过一段时间又有反应,通过查看服务的监控发现,服务存在cpu持续100%的情况,下面分享一下我的处理方案和过程,需要的朋友可以参考下
    2024-05-05
  • DTO 实现 service 和 controller 之间值传递的操作

    DTO 实现 service 和 controller 之间值传递的操作

    这篇文章主要介绍了DTO 实现 service 和 controller 之间值传递的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • javaweb Servlet开发总结(二)

    javaweb Servlet开发总结(二)

    这篇文章主要为大家详细介绍了javaweb Servlet开发总结的第二篇,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 这一次搞懂Spring事务注解的解析方式

    这一次搞懂Spring事务注解的解析方式

    这篇文章主要介绍了这一次搞懂Spring事务注解的解析方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论