Como usar os serviços Spring em beans gerenciados pelo JSF?

JSF é uma tecnologia muito popular no mundo de Java, no entanto, a cooperação com a Primavera ainda é dolorosa e requer hacks 'desagradáveis'. Eu tenho atualmente o problema com um desses "hacks".

Serviços de primavera são injetados usando oSpringBeanFacesELResolver. Está configurado emfaces-config.xml:

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

A injeção dos serviços da Spring é muito feia, mas está funcionando:

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

Mas há problemas. O JSF requer de mim que o bean gerenciado deve ser serializável. Isso significa que o serviço Spring também deve ser serializável ou o campo deve ser temporário. Quando o campo é transitório, a injeção não está funcionando (eu tenho nulo nesse campo). E fazer com que os serviços Spring sejam serializáveis ​​não é, em minha opinião, uma boa idéia e um possível problema de desempenho - o que deve acontecer com o contexto do Hibernate, fontes de dados, que são todas injetadas no serviço Spring?

Então, qual é a maneira correta e menos dolorosa de usar serviços Spring com beans gerenciados pelo JSF?

questionAnswers(1)

yourAnswerToTheQuestion