既然可以使用注解为Spring的Bean自动装配其他Bean的引用,同样可以使用注解来装配简单的值。Spring3.0引入了@Value,它是一个新的装配注解,可以让我们使用注解装配String类型的值和基本类型的值,例如int、boolean。我们可以通过@Value直接标注某个属性、方法或者方法参数,并传入一个String类型的表达式来装配属性。例如
@Value("lvmingyin")
private String name;
但是,这些值我们通常可以直接在Java代码中编写,为什么还要在@Value的属性中设置呢,在这种情况下,@Value显得有些多余。
实际上,装配简单的值并不是@Value所擅长的,借助SpEL表达式,@Value被赋予了魔力,在运行时通过SpEL动态计算复杂的表达式的值并把结果装配到Bean的属性中。这一特性也使得@Value注解称为强大的装配可选方案。
例如,与其设置一个硬编码的静态值,不如使用SpEL从系统属性中获取一个值:
@Value("#{systemProperties.myFavoritesSong}")
private String song;