Spring активировать аннотацию только на конкретный профиль
Функции безопасности My Spring активируются с помощью аннотации в основном классе. Пример ниже.
@ImportResource("classpath:/securityContext.xml")
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class MySpringBackend {}
Я хочу ограничить этот процесс загрузки файлов, связанных с безопасностью (в настоящее время выполняется с помощью аннотации, как показано выше), только для определенных профилей Spring, которые я буду передавать в качестве аргументов программы.
Я не смог найти документацию по ограничению аннотаций по профилю. Это возможно?
Например: что-то вроде добавления @Profile("production")
вышеупомянутая аннотация будет ограничивать его производственным профилем.
1 ответ
Поскольку @Component или @Configuration могут быть помечены только с помощью @Profile, необходимо использовать аннотацию @Conditional в сочетании с @ImportedResource для активации в определенном профиле. Проверьте эту страницу на стеке, чтобы найти ссылку на решение
Имейте 2 разных класса, каждый с разной аннотацией профиля.
Класс 1 будет иметь 1 набор аннотаций (помимо аннотации профиля). Класс 2 будет иметь другой набор аннотаций (опять же, помимо аннотации профиля).
Во время выполнения, на основе активного профиля, только один из двух классов будет внедрен в контекст приложения. Обратите внимание, что будут активированы только аннотации этого конкретного класса.