spring - 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>
- 那么我需要哪个注解来注入 Spring Bean?
- 我是否缺少 CDI 的任何其他配置才能让它找到 Spring bean?
提前致谢并致以最诚挚的问候!
解决方案
推荐阅读
- c++ - 当我将分配代码放入函数时,为什么会出现“缓冲区空间不足”?
- powershell - 如何知道谁是 Active Directory 中特定 OU 中的经理
- spring-boot - Spring Boot 应用程序自定义验证注释不会触发
- floating-point - IEEE-754十进制256实现?
- javascript - Can't generate valid jwt signature with google kms
- c# - 动态读取项目文件夹中的类
- java - 不要在 csv 导入时在空间上拆分字符串
- android - Ionic 4 / Angular 7 app *randomly* 不渲染组件的一部分(android build)
- python - 如何在 python 3 中正确使用 super().__init__()?
- java - 如何将 javax.persistence.criteria.* 类添加到 Quarkus 中的 Jandex 索引?