[英]JSF 2.2 and Spring 4 and CDI on different layers without losing Spring features
阅读完所有文章后,我有些困惑。 如果我在服务层中使用Weld Framework而不是简单的Spring限定符,则不需要使用其他服务。 我有一项使用JavaMailSender的服务。 我只想拥有在JSF控制器层中使用AOP的能力。
在阅读Spring(甚至Spring 3)的关于支持JSR-229和JSR-330的文章后,我感到非常困惑
Spring 3和JSR-330 @Inject And @Named示例
这是否意味着我可以那样做并且不会失去使用AOP之类的Spring功能的可能性? (是的,我认为。)
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;
@Named("newClientController")
@ViewScoped
public class NewClientController implements Serializable {
@Inject
private ClientService clientService;
////......
}
@Service
@Transactional
public class ClientService {
public ClientService(){
int i = 0;
}
@Autowired
@Qualifier("clientDAOMyBatis")
private ClientDAO clientDAO;
//....
}
我研究了几天,发现了几组决策
1) Spring和CDI之间的桥梁
https://stackoverflow.com/questions/5510144/cdi-bean-accessing-spring-beans 使用CDI @Inject注入Spring bean
优点:
缺点:
2)使用Spring @Component并为JSF创建自定义ViewScope http://blog.primefaces.org/?p=702
优点:
缺点:
3)可序列化的Spring Bean(有点奇怪)
请不要关闭这个问题。 我知道存在许多相关问题。 您能为我提供一些解决该问题的方法吗?
PS我使用MyBatis,它不支持JPA和基于Spring Java的配置,因为我想将此应用程序部署在云中。
如果您希望JSF托管Bean上具有所有Spring功能,我认为将Spring用作JSF的CDI是最好的方法(列表中的第二个选择)。 要创建自定义ViewScope,您可以尝试以下操作
http://blog.harezmi.com.tr/uncategorized/spring-view-scope-for-jsf-2-users/
这是将ViewScope与Spring一起使用的更好的实现。
-更新-
我在github上添加了一个示例项目。 你可以看到。
https://github.com/bhdrk/Tutorials/tree/master/spring4-jsf22-integration
我的一位博客读者报告说,Spring bean在最新版本的Spring 3.2(以及希望是Spring 4)中可序列化。 因此,您可以使用标准的JSF 2.2 @ViewScoped控制器,并将Spring Bean作为托管属性注入。 这有点不寻常,因为这是第三个注释(@ManagedProperty而不是@Autowire或@Inject)。 但据报道,它运行良好。
在我的博客上阅读完整的故事(在这里复制它太长了)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.