JSF는 Java 세계에서 매우 널리 사용되는 기술이지만 Spring과의 협력은 여전히 고통스럽고 '해로운'해킹이 필요합니다. 나는 현재이 '해킹'중 하나에 문제가 있습니다.JSF 관리 빈에서 Spring 서비스를 사용하는 방법은 무엇입니까?
스프링 서비스는 SpringBeanFacesELResolver
을 사용하여 주입됩니다.
<application>
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
</application>
봄 서비스의 주입은 매우 추한이지만, 노력하고 있습니다 : faces-config.xml
에 구성되어
@ManagedProperty(value="#{customerService}")
CustomerService customerService;
을하지만 문제가 있습니다. JSF는 관리 Bean을 직렬화 할 수 있어야한다고 요구한다. 즉, Spring 서비스도 직렬화 가능해야하거나 필드가 일시적이어야합니다. 필드가 일시적 일 때 주입이 작동하지 않습니다 (해당 필드에 null이 있음). 그리고 Spring 서비스를 직렬화 가능하게 만드는 것은 좋은 생각이 아니며 잠재적 인 성능 문제가 아닙니다. Hibernate 컨텍스트, 데이터 소스, 모든 것이 Spring 서비스에 주입되는 것은 무엇입니까?
JSF 관리 빈을 사용하여 Spring 서비스를 사용하는 것이 정확하고 덜 고통스러운 방법은 무엇입니까?