У меня есть следующая проблема, у меня в весенней загрузке есть определенный класс конфигурации, который содержит bean-компоненты, которые я хотел бы создать, только если определенное свойство, имеющее список значений, содержит определенное значение.
теперь класс конфигурации выглядит примерно так:
@ConditionalOnExpression("#{'${conditions.values.options}'.contains('ScenarioOne')}")
ConfigurationForScenarioOne{
@Bean
public StudentBean getStudentBean(){
...
}
}
В файле свойств у меня будет что-то вроде этого:
conditions.values.options=${CONDITIONS_VALUES_OPTIONS}
Затем укажите значение CONDITIONS_VALUES_OPTIONS
во время выполнения вот так:
-DCONDITIONS_VALUES_OPTIONS=ScenarioOne,ScenarioTwo,ScenarioFive
Причина, по которой я хочу это сделать, заключается в том, чтобы иметь возможность развертывать приложение и использовать разные bean-компоненты в зависимости от значения, указанного во время выполнения.
I будет иметь несколько из этих классов конфигурации, которые будут созданы в зависимости от того, какие из этих свойств переданы. Чтобы добиться этого, я пытался опираться на язык Spring Expression для выполнения следующих действий: 1-Считать свойство conditions.values.options
, затем преобразовать его в список, а затем проверить, содержит ли список нужную строку конфигурации.
До сих пор я пробовал несколько выражений, включая:
@ConditionalOnExpression("#{'${conditions.values.options}'.contains('ScenarioOne')}")
и другие подобные выражения, но безуспешно. Может ли кто-нибудь помочь мне увидеть, чего мне здесь не хватает?