@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;
}
posted @ 2023-05-23 14:48  进击的小蔡鸟  阅读(4386)  评论(0编辑  收藏  举报