我不是JSF的风扇。 Spring MVC的使得很多的意义,我,我已经在过去使用它。

你能说服我放弃它还是提供了很好的将其集成到JEE6和共享,并与陷阱CDI提示。

我不介意只是为MVC的东西,但如果我使用@Inject或在我的MVC控制器的应用程序上下文@EJB,这是怎么回事去错?

Seam3看起来有趣,虽然是为生产做好准备?

有帮助吗?

解决方案

  

你能说服我放弃它还是提供了很好的将其集成到JEE6技巧和份额,并与陷阱CDI

也许我错了,但我认为你无论如何都必须使CDI和Spring的DI部分之间进行选择,它们中的一个负责创建要发生的神奇对象。所以,如果你想使用CDI与Spring MVC的,你必须让你的控制器CDI豆。从的JavaOne 2010: “什么?难道我们现在做的” Java EE 6的面板说明

  

和用SpringMVC CDI? =>技术上是可行的:使用CDI bean作为控制器(但礼萨说,他们看到的并不是不够用SpringMVC需求做的工作)。

我也热烈建议看看的Java EE 6(CDI / EJB 3.1)XOR弹簧芯重装上阵

  

我不介意只是为MVC的东西,但如果我使用@Inject或在我的MVC控制器的应用程序上下文@EJB,这是怎么回事去错?

弹簧提供了内置的支持的“在注入”从JSR-330 ,并还提供了一些魔法@EJB。如果这是你正在寻找所有,Spring会工作。但是,这只是不是CDI(JSR-299)给你。

其他提示

另一种选择是使用JAX-RS作为控制器(使用Jersey实现你可以转发控制到JSP),并使用JSP对你的看法。这样,您就不必担心与Java EE的集成Spring。

例如,可以有一个的HomeController:

@Path("/")
@Stateless
public class HomeController {

    @Context
    HttpRequest request; // Injects request object so you set attributes.

    @EJB // Inject your EJB
    EmployeeServiceLocal employeeService;

    @GET
    public Viewable getHomePage() {

        Employee employee = employeeService.getEmployee();
        request.setAttribute("employee", employee);
        return new Viewable("/home.jsp", null);
    }
}

这将引导您进入一个JSP叫回到Home.jsp,你将能够通过请求对象来获取对JSP您的数据。请注意,JAX-RS用于REST Web服务,所以要了解什么是要去下面的代码中,你就必须有REST的理解。

从春季使用CDI 解释了如何构建一个CDI到弹簧桥用的BeanFactoryPostProcessor其进口所有豆来自CDI BeanManager成Spring应用程序上下文。

帕斯卡说得很对,你必须做出春DI和CDI之间的选择,但这种方法可以使选择的每个模块的。

在一个典型布局WAR,有使用在WEB-INF / lib中的若干服务和持久性模块中的一个web模块。随着CDI对春桥,你可以打开WEB-INF / lib目录模块插入CDI豆档案,而Web模块的的一个bean存档,仅使用了Spring DI。

在桥访问通过JNDI的CDI BeanManager并创建一个Spring工厂bean每个CDI豆。

我使用这个桥正是因为你的使用情况:集成与Java EE 6的后端一个Spring MVC的Web前端

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top