#java #spring #annotations
#java #весна #аннотации
Вопрос:
У меня есть файл свойств, который я читаю по аннотации spring следующим образом
@Value("${platform}")
private String platform;
после того, как я получу параметр платформы, я хотел бы прочитать второй параметр в зависимости от platform
значения параметра.
@Value("${url." platform ."ws}")
private String url;
но это выдает ошибку: «значение атрибута аннотации должно быть постоянным выражением».
поскольку существует множество изменений параметров в зависимости от значения «платформа», я ищу общее решение.
Ответ №1:
Вы не можете platform
получить прямой доступ к выражению @Value , но вы можете использовать язык выражений Spring для достижения своей конечной цели.
@Value("${platform}")
private String platform;
@Value("#{'Url.'.concat(${platform}).concat('.ws')}")
private String url;
Ответ №2:
Параметр вычисляется во время компиляции. Поэтому оно должно быть final
или static final
среди других (ie Enum
).
Я не знаю @Value
, позволяет ли это аннотация. Но вы всегда можете реализовать свою собственную аннотацию. Расширение невозможно в аннотациях Java.
Комментарии:
1. итак, есть ли способ использовать значение первого параметра для получения второго параметра?
2. есть ли какой-нибудь пример того, как я могу расширить аннотацию @Value? я новичок в весенних аннотациях.
3. Нет, это невозможно, но вы можете использовать свою собственную аннотацию.