У меня есть приложение Spring, который может использовать два различных Persistence API:Включение/отключение web.xml фильтр, используя профиль Spring
- Spring Data JPA
- Spring Data Neo4j
Когда используя Spring Data JPA, мне нужно объявить «OpenEntityManagerInViewFilter» в «web.xml» для ленивой загрузки:
<filter>
<filter-name>OpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Проблема в том, что я не могу включить этот фильтр при использовании Spring Data Neo4j. Оставив это позволило приводит к следующей ошибке во время выполнения:
No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined
Я хочу, чтобы выбрать, какие базы данных для использования с весенним профилем (например, spring.profiles.active=relational-database
или spring.profiles.active=graph-database
).
Вопрос: как включить «OpenEntityManagerInViewFilter», когда профиль «реляционная база данных», и отключить его, когда профиль «graph-database»?
Спасибо!
Похожие вопросы:
- How to conditionally enable/disable filter in web.xml но я не использую
DelegatingFilterProxy
.
Вы не можете, так как web.xml не имеет ничего общего с Spring. Вы могли бы использовать решение из вопроса, с которым вы связались, и в случае не нуждающегося в нем, используя фиктивный фильтр вместо фактического фильтра. –
Идея заключалась бы в создании моей собственной «no-op» реализации 'org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter' и загрузки ее только тогда, когда профиль« graph-database »? –
Нет, просто создайте noop-реализацию фильтра, которого достаточно, чтобы он не был конкретным. –