Spring MVC의 뷰 기술로 JSF 사용
저는 현재 작은 Spring MVC PoC를 구현하고 있으며, 회사의 대부분의 사람들이 Primefaces 환경이있는 J2EE에 익숙하기 때문에 JSF를 뷰 기술로 사용하고 싶습니다.
Spring MVC 3는 JSF 또는 단순히 JSP를 지원합니까? 나는 두 가지를 혼합하는 여러 기사를 읽었습니다.
내 필요는 매력적인 UI를 만드는 것입니다. 보기 기술로 JSP와 함께 Spring MVC를 사용하여 이것을 수행하는 간단한 방법이 있습니까?
우리의 응용 프로그램은 여러 페이지에서 일정 / 캘린더를 사용합니다. 기본적으로 시간 관리 앱입니다.
당신은 개념상의 실수를하고 있습니다. JSF는 뷰 기술이 아닙니다. JSF는 MVC 프레임 워크입니다. 이데올로기가 다르긴하지만 Spring MVC와 똑같습니다. JSF는 컴포넌트 기반 MVC이고 Spring MVC는 요청 기반 MVC입니다. 따라서 그들은 완전한 경쟁자입니다. 혼합 할 수 없습니다. 둘 중 하나를 선택해야합니다. 대신 JSP와 Facelet은 진정한 뷰 기술입니다. Java EE 6 (2009 년 12 월)부터 JSP는 더 이상 사용되지 않으며 JSF의 기본보기 기술인 Facelets (XHTML)로 대체되었습니다.
JSP보기 기술 과 함께 Spring MVC를 사용할 수 있습니다 . Facelets보기 기술 (및 기타 여러 기술) 과 함께 Spring MVC를 사용할 수도 있습니다 . 그러나 PrimeFaces와 같은 JSF 구성 요소 라이브러리는 물론 JSF 구성 요소와 함께 Spring MVC를 사용할 수 없습니다. JSF 출력 구성 요소는 작동 할 수 있지만 JSF 입력 구성 요소는 전혀 작동하지 않습니다. Spring MVC에는 이미 <form:xxx>입력을위한 자체 태그가 있습니다. 두 프레임 워크를 혼합하더라도 혼합되고 혼란스러운 코드베이스에서 두 프레임 워크의 기능의 절반이됩니다. 이것은 말이되지 않습니다. PrimeFaces와 동일한 UI를 사용하는 것뿐이라면 jQuery UI 만 가져옵니다 . 또한 PrimeFaces가 커버 아래에서 사용하는 것이기도합니다. PrimeFaces는 jQuery 기반 JSF 구성 요소 라이브러리입니다.
다른 측면에서는 Spring IoC / DI와 Spring MVC를 혼동하는 것도 매우 좋습니다. Spring IoC / DI는 JSF와 함께 사용할 수 있습니다. JSF 관리 빈 시설 ( @ManagedBean및 친구)을 Spring 관리 빈 시설 ( @Component및 친구)로 대체 할 수 있으며 , 일반적으로 @AutowiredJSF 백킹 빈에서 사용하기위한 유일한 목적으로 사용할 수 있습니다 . 하지만 그게 다입니다. JSF MVC 프레임 워크 라이프 사이클, JSF 구성 요소 및보기 기술은 변경되지 않습니다. 이에 상응하는 표준 Java EE는 CDI (및 EJB )를 사용합니다.
동일한 이야기가 Spring Security에 적용됩니다. JSF와 함께 사용할 수 있지만 구성하기 위해 Spring Security + Spring MVC 대상 문서 / 예제를 따르지 말고 Spring Security + JSF에만 사용해야합니다. 비즈니스 조치에 대한 Spring Security 제약은 JSF 관리 Bean 기능을 Spring 관리 Bean 기능으로 대체 할 때만 작동합니다. 따라서 이전 단락에서 설명한대로 "JSF에 Spring 통합"이 여전히 필요합니다. 이것에 해당하는 표준 Java EE는 .NET의 항목을 통해 컨테이너 관리 보안 (JAAS / JASPIC)을 사용하는 것 <security-constraint>입니다 web.xml.
동일한 이야기가 Spring WebFlow에도 적용됩니다. 또한 이전 버전 은 여러 JSF 구성 요소 라이브러리와 함께 사용할 때 충돌을 유발하므로 가장 최신 버전의 Spring WebFlow를 사용하고 있는지 확인하기 만하면됩니다 . 또한 JSF 2.2 이후 새로운 Faces Flows 기능이 표준 Java EE API의 일부로 도입되어 기본적으로 Spring WebFlow가 불필요 해졌습니다.
그런 다음 Spring Boot가 있습니다. 이것은 Java EE에서 직접적으로 해당되지 않습니다. Spring Boot는 기본적으로 main()"쉽고 추상적 인 방법으로"메소드를 사용하여 일반 Java 애플리케이션 클래스를 사용하여 Java EE 애플리케이션을 실행할 수 있도록합니다 . Spring Boot 없이는 확실히 가능합니다 (그렇지 않으면 Spring Boot는 존재하지 않았을 것입니다). 문서를 기반으로 서버 별 세부 사항을 고려해야하므로 구성에 대해 조금 더 작업 할뿐입니다. 예 : Undertow 및 Jetty .
JSF와 Spring MVC로 돌아와서, 정말로 필요한 경우 동일한 웹 애플리케이션에서 Spring MVC와 JSF를 서로 안전하게 실행할 수 있지만 서버 측에서는 상호 운용되지 않습니다. 완전히 독립적으로 실행됩니다. JSF 생성 HTML 페이지의 일부 JavaScript가 동일한 웹 애플리케이션에서 Spring 기반 REST 웹 서비스 호출을 호출하는 경우 클라이언트 측에서 기껏해야 서로 접촉 할 것입니다. 그러나 그 Spring 웹 서비스는 그에 따라 응답하기 위해 JSF에 대해 아무것도 알 필요가 없습니다. 해당 Spring REST 웹 서비스에 해당하는 표준 Java EE는 JAX-RS 입니다.
곧 출시 될 Java EE 8은 JSF와 Spring MVC의 교훈을 기반으로 " MVC " 라는 이름의 새로운 요청 기반 MVC 프레임 워크와 함께 제공되며 , 이에 따라 Spring MVC를 대체하고 JSF에 대한 표준 대안을 제공합니다.
또한보십시오:
- Java EE는 정확히 무엇입니까?
- 요청 MVC와 구성 요소 MVC의 차이점
- Java Server Faces 2.0의 주요 단점은 무엇입니까?
- CSS, HTML, JavaScript, jQuery에서 UI를 얻을 수있을 때 JSF의 필요성은 무엇입니까?
- Spring이나 EJB3 또는 모두를 함께 사용하는 것이 필요하거나 편리합니까?
- Spring JSF 통합 : JSF 관리 Bean에 Spring 컴포넌트 / 서비스를 삽입하는 방법은 무엇입니까?
- JSF2.0 이후의 뷰 정의 언어로서 Facelets가 JSP보다 선호되는 이유는 무엇입니까?
Spring MVC와 JSF는 실제로 섞이지 않습니다. 보기 관련 항목에 JSF를 사용하고 Spring이 지원 (서비스, daos 등)을 관리하고 연결하도록 할 수 있습니다. 그러나 @Controllers와 JSF 페이지를 일치시키려는 시도는 실제로 훌륭하게 작동하는 것이 아닙니다 (둘 다 컴포넌트 기반에 따라 서로 다른 스택 요청입니다).
Spring을 JSF와 통합하려면 SpringBeanFacesELResolverfaces-config.xml에를 추가해야합니다 . Springs 애플리케이션 컨텍스트에서 Bean을 조회합니다. 이 작업을 수행하려면 CDI 기반 주석이 아닌 일반 JSF 주석을 사용해야합니다.
Spring Webflow는 여기에서 도움이 될 수 있습니다. 이 샘플 프로젝트를 확인하십시오. https://github.com/spring-projects/spring-webflow-samples/tree/master/primefaces-showcase
참고 URL : https://stackoverflow.com/questions/18744910/using-jsf-as-view-technology-of-spring-mvc
'Program Club' 카테고리의 다른 글
| Python에서 함수 호출의 실행 시간을 제한하는 방법 (0) | 2020.11.19 |
|---|---|
| 파일 이름의 배치 명령 날짜 및 시간 (0) | 2020.11.19 |
| RSpec : 여러 변경 예상 (0) | 2020.11.19 |
| webdesign-웹에 가장 적합한 jpg 또는 png (0) | 2020.11.19 |
| Mac 터미널 Vim은 줄 끝에서만 백 스페이스를 사용합니다. (0) | 2020.11.19 |