Spring @Value с разбиением массива и получением первого значения. - PullRequest
0 голосов
/ 05 июня 2019

Spring @Value с разбиением массива и получением первого значения arrayList

у меня было my.list=a,b,c
Я изо всех сил пытаюсь получить первое значение, то есть

Я пытался,

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

Есть ли лучший метод, чем эта процедура?

Ответы [ 2 ]

1 голос
/ 05 июня 2019

У вас есть синтаксическая ошибка в этой строке

@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);

    }

}

файл application.properties

my.list=a,b,c

Вы можете принять это значение непосредственно какниже

@Value("#{'${my.list}'.split(',')[0]}")
String values;
0 голосов
/ 05 июня 2019
@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();
...