Как иметь класс конфигурации, внедрить что-то уже созданное spring-boot и изменить его

Я пытаюсь расширить activiti-spring-boot до интегрируйте его с spring-security.

Это мой первый раз как с пружиной, так и с пружинной загрузкой. Я получаю много отличных результатов, исследуя, как написать код для этого. Что меня интересует, так это ответ.

https://github.com/jbarrez/spring-boot-with-activiti-example/issues/5

Что я и сделал, опубликовав свой вопрос в конце этого выпуска github.

Что я хочу спросить здесь, так это то, что концептуально это означает под

«Обычный способ Spring: иметь класс @Configuration и внедрить bean-компонент ProcessEngine или ProcessEngineConfiguration, созданный Spring Boot».

Означает ли это, что Spring Boot уже настроил компонент ProcessEngine или ProcessEngineConfiguration, и каким-то образом я могу внедрить их и продолжить настройку, не теряя то, что уже настроено Spring Boot?

Это то, как работает внедрение зависимостей? Это концептуальный вопрос, потому что я думал, что внедрение зависимостей — это просто способ заменить интерфейс реализацией этого интерфейса. Насколько я понимаю, если, например, я заменю bean-компонент ProcessEngineConfiguration, я потеряю всю конфигурацию, выполненную Spring-Boot, и мне придется перенастраивать их снова.

Имейте в виду, что мое понимание Spring, скорее всего, неверно!

ТИА

* Для уточнения: activiti-spring-boot — это проект для начала работы, который интегрирует activiti и spring с помощью Spring Boot. Он использует базовую аутентификацию. Я хочу использовать аутентификацию на основе токенов, поэтому я на самом деле пытаюсь интегрировать activit-spring-boot с Spring Security, используя другой материал Spring-Boot, называемый spring-boot-starter-security.


person Haris Hashim    schedule 01.01.2016    source источник
comment
Вы неправильно понимаете значение инъекции зависимостей. Внедрение зависимостей означает, что у вас есть то, что вам нужно для внедрения вашего класса. Эта концепция обычно относится к IoC (инверсия управления), которая состоит в том, чтобы иметь структуру, управляющую вашей структурой управления и внедряющую зависимости. Это делается стандартным ядром Spring. Spring boot — это современный инструмент, который использует преимущества Spring для загрузки некоторых конфигураций по умолчанию (вы указываете boot, что вам нужно, и даете некоторые настраиваемые значения, и boot создает для вас несколько готовых к внедрению bean-компонентов).   -  person Xtreme Biker    schedule 02.01.2016
comment
Однако, скажем, если я расширяю/наследую класс и ввожу его с помощью аннотации @Bean для замены родительского/унаследованного класса. Разве это не означает, что мой пользовательский класс и его код будут использоваться вместо родительского класса. Как это может продолжаться с той же конфигурацией, что и Spring Boot, по-прежнему большой вопрос, который я исследую сейчас и опубликую здесь, когда получу рабочее решение. С уважением!   -  person Haris Hashim    schedule 03.01.2016
comment
Я действительно не понимаю, как этот @ Bean можно использовать для внедрения класса, который расширяет другой класс. Но код, который я сейчас пишу, использует @Configuration, и внутри него я могу использовать @Bean для создания функции, возвращающей другой класс. Это меня сильно смущает, так как я думал, что бобы - это POJO. Но в моем текущем коде он используется для аннотирования функций, возвращающих класс. Другая запутанная вещь заключается в том, что когда у меня есть несколько функций аннотирования @ Bean. Не все эти функции будут вызываться (т.е. я ставлю точки останова и отлаживаю их). Весна сводит меня с ума, потому что я не могу отследить код, который не выполняется :D.   -  person Haris Hashim    schedule 03.01.2016


Ответы (1)


Возможный ответ от меня

Пока что код можно увидеть здесь. Я понятия не имею, как поместить сюда код, кроме боли в заднице, когда приходится делать отступ в 4 пробела в каждой строке.

Итак, что я сделал, так это расширил класс и добавил пользовательские функции в один из переопределенных методов в этом классе.

Затем создайте класс @Configuration, в котором указанный выше класс вводится с использованием аннотации @Bean вместо родительского класса. Я думаю, это ключ к пониманию

«Обычный способ Spring: иметь класс @Configuration и внедрить bean-компонент ProcessEngine или ProcessEngineConfiguration, созданный Spring Boot».

Хотя то, что я сделал, не совсем то, что указано выше. То, что я сделал, можно обобщить как

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

Поскольку я не перенастраивал все, что было настроено с помощью spring-boot. И просто замените ProcessEngineFactoryBean моим собственным классом, который его расширяет. Я добился того, чего хотел, не нарушая/изменяя существующую конфигурацию.

С учетом сказанного, в то время как код делал то, что должен был делать. Это все еще не работает, как ожидалось. Отсюда причина, по которой я задаю вопрос на форуме Activiti.

person Haris Hashim    schedule 03.01.2016