Jak korzystać z usług Spring w fasolach zarządzanych przez JSF?

JSF jest bardzo popularną technologią w świecie Java, jednak współpraca z Springem jest nadal bolesna i wymaga „paskudnych” hacków. Obecnie mam problem z jednym z tych „hacków”.

Wiosenne usługi są wstrzykiwane za pomocąSpringBeanFacesELResolver. Jest skonfigurowany wfaces-config.xml:

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

Wstrzyknięcie wiosennych usług jest bardzo brzydkie, ale działa:

@ManagedProperty(value="#{customerService}")
CustomerService customerService;

Ale są problemy. JSF wymaga ode mnie, aby zarządzany komponent bean mógł być serializowany. Oznacza to, że usługa Spring musi być również serializowalna lub pole powinno być przejściowe. Gdy pole jest przejściowe, wstrzyknięcie nie działa (w tym polu mam wartość NULL). Czyniąc usługi Spring serializowalnymi, moim zdaniem nie jest to dobry pomysł i potencjalne problemy z wydajnością - co powinno się stać z kontekstem Hibernate, źródłami danych, z których wszystkie są wprowadzane do usługi Spring?

Więc jaki jest poprawny i mniej bolesny sposób korzystania z usług Spring przy użyciu komponentów zarządzanych przez JSF?

questionAnswers(1)

yourAnswerToTheQuestion