首页 > 解决方案 > JSF 2.3 (CDI) + Spring 4 集成

问题描述

我使用 JSF 2.3 和 Weld 作为在 Tomcat 9 上运行的 CDI 实现从头开始创建了一个新的 Web 项目。这一切正常。现在我想向服务库(Spring 4 + Hibernate 5)添加一个依赖项,该服务库实现例如针对数据库的用户身份验证。这是所有现有代码,因此无法修改。我已经阅读了很多文章,但不幸的是没有人真正帮助过我。我面临的问题是我不知道如何将 Spring-Bean (4.3.12.RELEASE) 注入 JSF-CDI 托管 bean中。

@Named
@RequestScoped
public class AuthenticationController extends AbstractBean {

    @Inject
    transient private IUserService _springUserService;

    @PostConstruct
    public void postConstruct() {
        // _springUserService is null
    }
}

服务实现类注释为

@Repository(IUserService.BEAN_NAME)
public class UserService implements IUserService {
 //...
}

web.xml我已经配置了 spring 上下文加载器:

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:spring-config-domain.xml
    </param-value>
</context-param>

faces-config.xml我已经配置了 Spring-EL-Resolver

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

提前致谢并致以最诚挚的问候!

标签: springjsfcdi

解决方案


推荐阅读