Загрузка конструктора Spring Bean из другого компонента, используя List из констант
У меня есть бин класса с таким конструктором
public Test(final Integer c01,final List<Students>c02){this.c01 = c01;this.c02 = c02;return;}
Студенты приходят из другого компонента, у которого есть метод, который заботится о получении из базы данных. У меня есть объявление компонента, подобное этому
<constructor-arg index="0" type="java.lang.Integer" value='13'/>
<constructor-arg index="1" type="java.util.List" value="#{myDAO.loadStudents(#{T(java.util.Arrays).asList(T(Constants).HOLIDAY,T(Constants).OUT_OF_OFFICE,T(Constants).SICK_LEAVE)})}"/>
У метода есть такая подпись
public List<Student>loadStudents(final List<String>filters){}
Я попытаюсь объяснить, что мне нужно заполнить индекс 2 конструктора списком, который мне нужно извлечь из БД из другого компонента, который передает список, у которого есть константы в статической манере, конечно, это можно легко решить, используя эта подпись только Java
new Test(13,Arrays.asList(Constants.HOLIDAY,Constants.OUT_OF_OFFICE,Constant.SICK_LEAVE));
Но когда у меня есть мой конфигурационный файл XML Spring, выдается что-то вроде
Unexpected token. Expected 'identifier' but was 'lcurly({)'
Что не так с этим кодом, я не очень хорошо, используя Spring
<constructor-arg index="1" type="java.util.List" value="#{myDAO.loadStudents(#{T(java.util.Arrays).asList(T(Constants).HOLIDAY,T(Constants).OUT_OF_OFFICE,T(Constants).SICK_LEAVE)})}"/>
1 ответ
Ваше выражение SpEL слишком сложное:-) Я бы посоветовал вам использовать конфигурацию Spring Java и написать, что вы пытаетесь сделать в простом Java-коде.
Кроме того, у меня есть (сильные) архитектурные сомнения относительно чтения базы данных из вашей конфигурации Spring. Но вопрос не в этом, поэтому я постараюсь не обращать на это внимания:-)