Добрый день!
В проекта появилась необходимость реализовать свою безопасность.
Хочу создать класс и его impl com.haulmont.cuba.core.global.Security.
Как реализовать вызов моего класс, а не штатного?
Добрый день!
В проекта появилась необходимость реализовать свою безопасность.
Хочу создать класс и его impl com.haulmont.cuba.core.global.Security.
Как реализовать вызов моего класс, а не штатного?
Добрый день,
Заменить любой Spring-бин можно, указав определение расширенного класса бина в spring.xml
См. Расширение бизнес-логики - Платформа CUBA. Руководство по разработке приложений
Так как бин Security присутствует в приложении два раза: один раз в web-контексте и один раз в core-контексте, то переопределить его нужно два раза в двух разных spring.xml файлах.
Нужно отметить, что команда CUBA не очень рекомендует подобные расширения системных бинов. Они могут затруднить в будущем обновление проекта на новые версии платформы (т.е. на Jmix).
Добрый день!
Добавил в двух местах новый бин, но теперь выдает ошибку
Error creating bean with name ‘cuba_EntityImportViewBuilderAPI’: Unsatisfied dependency expressed through field ‘security’; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.haulmont.cuba.core.global.Security’ available: expected single matching bean but found 2: cuba_Security,IBTSecurity
Он теперь видит два бина не может понять какой ему использовать.
public class IBTSecurity implements Security
Это моя impl, ниже код не стал присылать т.к. я везде выставил там TRUE
По ссылке написано:
Аннотацию
@Component
в расширяющем классе применять нельзя, переопределение бинов
возможно только с помощью конфигурации в XML.
Регистрируем класс в
spring.xml
модуля core проекта с тем же идентификатором, что и бин платформы
это убрал
Правильно ли я понимаю, что в параметр id я должен указать “cuba_Security”?
да
5 символов