弹簧@Value与数组列表拆分并获取第一个值



带有数组列表拆分的春季@Value并获取arrayList的第一个值

我有my.list=a,b,c
我正在努力获得第一个值,即

我试过了

@Value("#{'${my.list}'.split(',')})
List<String> values;
String myVal = values.get(0);

有没有比这个程序更好的方法?

此行中有语法错误

@Value("#{'${my.list}'.split(',')})

应更正如下

@Value("#{'${my.list}'.split(',')}")
List<String> values;

我建议您在以下解决方案中作为更好的方法

域类

@Component
public class Data {

    @Value("#{'${my.list}'.split(',')}")
    List<String> values;

    public List<String> getValues() {
        return values;
    }
    public void setValues(List<String> values) {
        this.values = values;
    }
}

这是如何使用域类

@RestController
@RequestMapping("/")
public class Mycon {

    @Autowired
    Data data;
    @GetMapping
    public String hello(ModelMap model) {
        return data.getValues().get(0);
    }
}

应用程序属性文件

my.list=a,b,c

您可以直接获取该值,如下所示

@Value("#{'${my.list}'.split(',')[0]}")
String values;
@Autowired
Environment env;
//To get the List<String>
List<String> values = Arrays.asList(env.getProperty("my.list").split(",");
//Then, you can get value into an Optional to prevent NullPointerException
Optional<String> myValue = values.stream().findFirst();

最新更新