[SPRING] / 활성화 봄 프로파일을 사용하여 web.xml에 필터를 해제
SPRING/ 활성화 봄 프로파일을 사용하여 web.xml에 필터를 해제
나는 두 개의 서로 다른 퍼시스턴스 API를 사용할 수있는 봄 응용 프로그램이 있습니다 :
스프링 데이터 JPA를 사용하는 경우, 내가 게으른 로딩을 할 "web.xml에"의 "OpenEntityManagerInViewFilter"을 선언 할 필요가 :
<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>
문제는 내가 봄 데이터 Neo4j를 사용할 때 사용 가능이 필터를 유지할 수 있다는 것입니다. 이 활성화두면 다음과 같은 런타임 오류로 연결 :
No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined
나는 봄 프로파일 (예를 들어, spring.profiles.active = 관계형 데이터베이스 또는 = spring.profiles.active 그래프 데이터베이스)와 함께 사용할 데이터베이스를 선택합니다.
질문 : 프로필 "관계형 데이터베이스는"때 "OpenEntityManagerInViewFilter"을 활성화하고 프로필은 "그래프 데이터베이스"인 경우 사용하지 않도록 할 수있는 방법?
감사!
관련 질문 :
해결법
-
==============================
1.좋아, 나는 이것을 정리. 나의 새로운 "의 web.xml은"대신 org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter의 DelegatingFilterProxy을 사용합니다 :
좋아, 나는 이것을 정리. 나의 새로운 "의 web.xml은"대신 org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter의 DelegatingFilterProxy을 사용합니다 :
<filter> <filter-name>toggleOpenEntityManagerInViewFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>toggleOpenEntityManagerInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
그럼 내의 ApplicationContext에, 나는 (필터 이름 값입니다) "toggleOpenEntityManagerInViewFilter"라는 이름의 빈을 만들 수 있습니다. 트릭은 봄 프로파일에 따라 다른 클래스를 실체화하는 것입니다 :
<beans profile="graph-database"> <bean id="toggleOpenEntityManagerInViewFilter" class="my.project.dal.utils.spring.DoNothingFilter"/> </beans> <beans profile="relational-database"> <bean id="toggleOpenEntityManagerInViewFilter" class="org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter"/> </beans>
my.project.dal.utils.spring.DoNothingFilter는 다음과 같이 정의된다 :
public class DoNothingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { } }
이것은 작동하는 것 같다.
from https://stackoverflow.com/questions/30800916/enabling-disabling-a-web-xml-filter-using-a-spring-profile by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] MDC에 대한 작업 정보를 액세스 (0) | 2019.10.03 |
---|---|
[SPRING] 봄 데이터 Elasticsearch이 날짜 java.time.LocalDateTime와 함께 작동하도록하는 방법 (0) | 2019.10.03 |
[SPRING] 봄 보안 - 페이지를 로그인 매개 변수를 전달 (0) | 2019.10.03 |
[SPRING] POJO가 인스턴스 변수로 JSON 필드를 포장 (0) | 2019.10.03 |
[SPRING] 봄 스코프 프록시는 무엇입니까? (0) | 2019.10.01 |