java - 如何在 Spring Boot 中将属性文件值读入字符串集

标签 java spring spring-boot java-8 properties-file

我试过用

@Value("#{'${white.listed.hotel.ids}'.split(',')}")
private Set<String> fareAlertwhiteListedHotelIds;

但是当 white.listed.hotel.ids 为空时,则也设置为具有空白值的一种尺寸。

white.listed.hotel.ids =

谁能帮我提供一个版本,其中 whiteListedHotelIds 可以包含属性文件中指定的值或没有空白项的项目。

最佳答案

您可以调用自定义方法( as described in this other answer to build a map ,其本身受 @FedericoPeraltaSchaffner's answer 启发):

@Value("#{PropertySplitter.toSet('${white.listed.hotel.ids}')}")
private Set<String> fareAlertwhiteListedHotelIds;

...

@Component("PropertySplitter")
public class PropertySplitter {
    public Set<String> toSet(String property) {
        Set<String> set = new HashSet<String>();

        //not sure if you should trim() or not, you decide.
        if(!property.trim().isEmpty()){
            Collections.addAll(set, property.split(","));
        }

        return set;
    }
}

在此方法中,您可以随意处理属性(例如,当为空时的特定逻辑)。

关于java - 如何在 Spring Boot 中将属性文件值读入字符串集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40204070/

相关文章:

java - 将javascript对象数组作为参数发送到 Controller

java - Spring @ExceptionHandler 行为

java - 如何使用 @ComponentScan @Configuration 中的 DataSource 依赖项对 Spring Boot 应用程序的 Controller 进行单元测试

java - 如何在 Spring Boot 2.0 应用程序中打印 spring 数据源值

Java Spring Boot - spring-boot-starter-tomcat 依赖项不适用于在本地运行时提供的范围

java - Jackson 动态更改 JsonIgnore

在 2 个键上索引的 Java HashMap

java - weblogic.transaction.internal.AppSetRollbackOnlyException : setRollbackOnly called on transaction

java - 如何使用 Mockito 关闭 stub 方法的参数

java - Spring Kafka - 在运行时订阅新主题