Как использовать сервисы Spring в бинах, управляемых JSF?

JSF является очень популярной технологией в мире Java, однако сотрудничество со Spring по-прежнему болезненно и требует «грязных» взломов. В настоящее время у меня проблема с одним из этих «хаков».

Услуги Spring вводятся с использованиемSpringBeanFacesELResolver, Это настроено вfaces-config.xml:

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

Внедрение сервисов Spring очень уродливо, но работает:

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

Но есть проблемы. JSF требует от меня, чтобы управляемый компонент был сериализуемым. Это означает, что служба Spring также должна быть сериализуемой, или поле должно быть временным. Когда поле является переходным, инъекция не работает (у меня есть ноль в этом поле). А делать сериализуемые сервисы Spring, на мой взгляд, не очень хорошая идея и потенциальные проблемы с производительностью - что должно произойти с контекстом Hibernate, источниками данных, которые все внедряются в сервис Spring?

Итак, каков правильный и менее болезненный способ использования сервисов Spring с управляемыми компонентами JSF?

Ответы на вопрос(1)

Ваш ответ на вопрос