一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天, 点击查看活动详情 。
在我们日常的开发过程中,会涉及到各种各样的配置以及配置文件,每个环境的配置都不尽相同的,所以管理好对应的配置也是一项很重要的工作的。现在很多项目执行或者部署的时候都是使用远程仓库拉取对应的配置,然后结合代码一起执行的。实现自动化的部署构建。
@Value注解默认值
自动化的部署构建,肯定要把配置和项目代码进行解耦。解耦的最好方式就是使用占位符和默认配置。在Spring中就是使用@Value这个注解。@Value提供了一种非常方面的方式去将属性注入到Bean组件中,即使在对应的属性不存在时,也可以提供对应的默认值。现在我们来看下几种默认值的用法。
String默认值用法
以下就是String属性默认值的用法:
@Value("${my.key:my default value}")
private String defaultStringValue;
我们也可以设置一个空字符串给对应的属性
@Value("${my.key:})"
private String blankDefaultStringValue;
基本数据类型的用法
我们可以设置int或者boolean这样的基本数据类型,也可以使用对应的包装类Integer或者Boolean进行对应的赋值:
@Value("${my.key:true}")
private boolean booleanWithDefaultValue;
@Value("${my.key:42}")
private int intWithDefaultValue;
我们也可以注入使用逗号分隔的数组
@Value("${my.key:one,two,three}")
private String[] stringArrayWithDefaults;
@Value("${my.key:1,2,3}")
private int[] intArrayWithDefaults;
使用SpEL表达式
我们也可以使用Spring表达式语言(SpEL)进行编写,实现对应的默认值。以下的例子表明,我们需要系统属性my.key去设置我的值,假如没有的话,就使用my default system property value去设置我的这个值:
@Value("#{systemProperties['my.key'] ?: 'my default system property value'}")
private String spelWithDefaultValue;
Spring @Value注解给我们提供了将配置解耦的能力,让项目代码和配置完全隔离。