복붙노트

[SPRING] 스프링 3.1 애플리케이션에서 JSF 관리 빈을 선언하는 방법은?

SPRING

스프링 3.1 애플리케이션에서 JSF 관리 빈을 선언하는 방법은?

Java EE 아키텍처를 기반으로하는 응용 프로그램 개발에 대한 저의 첫 경험과

내가 조금 혼란스러워하는 문제에 대해 물어보고 싶습니다. 내 JSF 관리 Bean을 선언하고 싶지만이 제약 사항을 처리 할 수있는 많은 솔루션이있다.

내 질문은 :이 세 가지 솔루션의 차이점은 무엇입니까? ApplicationConfig.java 또는 / 및 web.xml에서 어떤 변경을해야합니까? 그리고 Spring에 관해서는, web.xml에 어떤 종류의 리스너를 놓아야합니까?

나는 많은 튜토리얼과 예제를 읽으려고 노력했지만 매번 자신이 막혔다!

해결법

  1. ==============================

    1.Spring과 JSF를 통합 할 때 두 기술의 초보자가 될 수는 없습니다. 서로 잘 어울리지 않기 때문입니다. JSF와 Spring에 대한 몇 권의 책을 얻고 그것들을 통합하기 전에 두 책을 서로 이해하는 것이 가장 좋습니다.

    Spring과 JSF를 통합 할 때 두 기술의 초보자가 될 수는 없습니다. 서로 잘 어울리지 않기 때문입니다. JSF와 Spring에 대한 몇 권의 책을 얻고 그것들을 통합하기 전에 두 책을 서로 이해하는 것이 가장 좋습니다.

    JSF는 MVC에 중점을 둔 컴포넌트 기반 웹 프레임 워크입니다. Spring은 웹 애플리케이션에만 종속되지 않는 Dependency Injection과 Inversion of Control 프레임 워크입니다.

    이 세 가지 용어를 이해하지 못하는 경우 :

    그렇다면 제 제안은 당신이하고있는 일을 멈추고 즉시 읽기 시작한다는 것입니다.

    이 두 가지를 통합 할 때 주요 문제는 해결해야 할 두 가지 프레임 워크 간의 책임이 일부 중복된다는 것입니다. 독립형 프레임 워크 인 JSF는 별도의 DI 프레임 워크가 필요없이 자체 관리 Bean의 범위를 유지합니다. 그러나 봄을 소개 할 때 당연히 갈등이 일어날 것입니다. Spring은 JSF와 별개로 자신의 Bean을 관리하므로 이러한 ManagedBeans를 참조하고 비즈니스 객체 또는 DAO를 사용하기 위해 JSF ManagedBeans를 스프링 컨트롤러로 만들어야한다.

    @Controller 어노테이션으로 JSF ManagedBean을 선언 할 수있다. Spring 3은 그것이 JSF 관리 빈이라는 것을 인식 할만큼 똑똑하고 Bean 이름은 ManagedBean과 같이 선언 된 이름이 될 것이다.

    @Controller
    @Scope("session")
    @ManagedBean(name="testBean")
    

    이제이 문제가 처리되었으므로 다음 문제는 JSF 구현과 함께 제공되는 성가신 EL 해결 프로그램입니다. EL Resolver는 기본적으로 XHTML / JSF 페이지에서 EL 표현식을 해결합니다. 그러나 testBean을 참조 할 때이 이름으로 JSF 관리 빈을 참조하기 때문에이 이름을 올바르게 해석 할 수 없으며 필요한 모든 Spring 의존성을 가진 스프링 컨트롤러를 찾을 수 없습니다.

    스프링 3은 JSF 구현에 번들로 제공되는 사용자 정의 EL 리졸버 대신 사용자 정의 EL 리졸버를 제공함으로써이 문제를 해결합니다. faces-config.xml에서 사용되도록 선언 할 수 있습니다.

    <application> 
       <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver> 
    </application>
    

    이제 마침내 :

    다른 Spring 제어 서블릿을 필요로하지 않거나 Spring Security 통합을 필요로하지 않고 JSF + Spring을 통합하는 경우에는 web.xml에 아무 것도 추가하지 않아도됩니다. FacesServlet과 컨텍스트 매개 변수뿐 아니라 상황에 따라 필요할 수있는 타사 구성 요소 라이브러리 서블릿을 선언하면됩니다.

  2. from https://stackoverflow.com/questions/12317288/how-to-declare-a-jsf-managed-bean-in-a-spring-3-1-application by cc-by-sa and MIT license