如何在spring中使用@Value将null作为属性值

时间:2016-08-25 03:15:19

标签: java spring spring-mvc spring-boot

这是我的直截了当的问题,因为它的背景很少。

我使用application.properties

启动应用程序
allowedValues=Hello, Hi, null

我正在读取spring组件中的值,如下所示

@Value("${allowedValues}")
private String[] allowedGreetings;

运行时,allowedGreetings数组中的值与预期值("Hello", "Hi", "null")

相同

但我想要的是一种将数组作为("Hello", "Hi", null)

的方法

正如您所看到的,我无法将allowedGreetings的默认值设置为null,因为我希望将null作为数组的成员。

这是为了避免编写函数来读取数组并将"null"转换为数组中的null。春天有可能吗?

1 个答案:

答案 0 :(得分:0)

我有一个这样的课程

package tuladhar.aman;
@Component // @Service , @Controller etc
public class Application {}

创建静态方法parsePropertiesparseString。 使用SpEL调用方法

"#{T(tuladhar.aman.Application).parseProperties('${allowedValues}')}"

    public static List<String> parseProperties(String[] array) {
        return Stream
            .of(array)
            .map(Application::parseString)
            .collect(Collectors.toList());
    }

    public static  String parseString(String s){
        return "null".equals(s) ? null : s;
    }

    @Value("#{T(tuladhar.aman.Application).parseProperties('${allowedValues}')}")
    private List<String> allowedValues;