[英]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.