значение атрибута аннотации должно быть константным выражением - PullRequest
4 голосов
/ 28 октября 2011

У меня есть файл свойств, который я читаю с помощью весенней аннотации, подобной этой

    @Value("${platform}")
    private String platform;

после того, как я получу параметр платформы, я хотел бы прочитать второй параметр в зависимости от значения параметра platform.

    @Value("${url." + platform + ."ws}")
    private String url;

но это дает ошибку, "значение атрибута аннотации должно быть константным выражением". поскольку в зависимости от значения «платформа» существует множество изменений параметров, я ищу универсальное решение.

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Параметр оценивается во время компиляции.Таким образом, он должен быть final или static final среди других (то есть Enum).

Я не знаю, позволяет ли аннотация @Value.Но вы всегда можете реализовать свою собственную аннотацию.Расширение невозможно в аннотациях Java.

1 голос
/ 14 января 2016

Вы не можете получить доступ к platform напрямую в выражении @Value, но вы можете использовать Spring Expression Language для достижения вашей конечной цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...