У меня проблема в процессе миграции существующего весеннего веб-приложения на Spring Boot 1.5.13.Я обработал почти все, но мне не удалось внедрить хороший модуль персистентности в WebMvcAutoConfiguration.На самом деле у меня есть 3 разные фабрики диспетчера сущностей, которые импортируются из пути к классам (предоставлены в виде файла .xml 3 разными внутренними библиотеками, у меня нет возможности их изменить).Каждый из них разделен следующим образом:
<sqe-db:jpa-emf database-definition-name="db-name" embedded-datasource="false"/>
и
<bean id="transaction-mnanager-name" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="jpa-lib-name" />
</bean>
В настоящее время конфигурация источников данных предоставляется tomcat, но я перенесу их в application.properties длясреда разработки
После миграции я не нашел способа указать правильный bean-компонент для WebMvcAutoConfiguration, и это приводит к следующей ошибке:
Method requestMappingHandlerMapping in org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$EnableWebMvcConfiguration required a single bean, but 3 were found:
- jpa-lib1-name1: defined in null
- jpa-lib1-name2: defined in null
- jpa-lib1-name3: defined in null
Моя цель на данный моментдолжен иметь следующую конфигурацию:
- иметь приложение, которое может быть запущено как SpringApplication и развернуто как WAR (и я думаю, что я уже сделал это правильно)
- имея способчтобы использовать автоконфигурацию Spring Boot для веб-приложений, даже с несколькими фабриками сущностей в classpath
- использовать мои собственные источники данных для профиля "dev", но оставить tomcat один для другой среды.
мои реквизиты, более или менее: - минимизируют изменения, необходимые для существующего приложения - продолжают использовать .xml, предоставленный libraries
Простым вариантом было бы переписать конфигурацию, используя более современную конфигурацию, управляемую аннотациями, но я бы предпочел придерживаться существующей реализации, чтобы мне не пришлось ее менять при создании новой библиотеки
Любой способ объявить bean-компонент @Primary, не касаясь существующего XML-файла?
Любые идеи или другие подходы приветствуются