@Value使用详解
一 介绍
在Spring框架中,@Value
注解是用来注入外部化配置文件或者系统属性的值。通过使用这个注解,我们可以注入一些简单类型的值(int,String,boolean等),也可以注入一个复杂对象。这个注解可以标记在类的属性上,表示将该属性的值与配置文件中的某个属性的值进行绑定。
比如我们可以通过以下方式注入一个配置文件中的属性值:
@Value("${example.property}")
private String exampleProperty;
其中${example.property}
就表示配置文件中的某个属性的名称。
二 注意事项
使用 @Value
注解时需要注意以下几个问题:
01 属性值为空的情况
如果您尝试获取一个不存在的属性或属性值为空,则会抛出异常。
例如,下面的代码中,我们使用 @Value
注解来获取名为 myapp.service.name
的属性值,并将其注入到 serviceName
字段中。如果该属性不存在或值为空,则会抛出 IllegalArgumentException
异常。
@Service
public class MyService {
@Value("${myapp.service.name}")
private String serviceName;
// ...
}
02 不主动更新
nacos的配置更新后,服务中使用@Value注入的属性值并不会发生变化,重启后才会生效
如果要实现不重启,属性值随着nacos配置更新的话需要搭配@RefreshScope使用
例如
@RefreshScope
public class IndexController {
@Value("${fs.files-server.type}")
private String type;
}