Frage

Ich bin kein Fan von JSF. Spring MVC viel Sinn für mich macht, und ich habe es in der Vergangenheit verwendet.

Können Sie mir reden davon aus oder geben Tipps für sie gut in JEE6 und mit anderen teilen und gotchas mit CDI zu integrieren.

Ich habe nichts dagegen einen Anwendungskontext nur für die MVC Sachen mit, aber wenn ich @Inject oder @EJB in meiner MVC-Controller, was falsch gehen los?

Seam3 scheint interessant obwohl es für Produktion bereit?

War es hilfreich?

Lösung

  

Können Sie mir reden davon aus oder geben Tipps für sie gut in JEE6 zu integrieren und zu teilen und gotchas mit CDI

Vielleicht bin ich falsch, aber ich denke, dass Sie irgendwie eine Wahl zwischen CDI und dem DI Teil des Frühlings machen müssen, einer von ihnen muss verantwortlich sein von Objekten für die Magie zu schaffen auftreten. Also, wenn Sie CDI mit Spring MVC verwenden möchten, sollten Sie Ihre Controller CDI Bohnen machen. Von JavaOne 2010: "Was wir jetzt tun tun" Java EE 6 Panel Hinweise :

  

SpringMVC und CDI? => Technisch möglich: Einsatz CDI Bohnen als Controller (aber Reza sagt sie nicht genug Nachfrage nach SpringMVC zu sehen, die Arbeit zu tun).

Ich schlage vor, auch warm einen Blick auf Java EE 6 (CDI / EJB haben 3.1) XOR Federkern Reloaded .

  

Ich habe nichts dagegen einen Anwendungskontext nur für die MVC Zeug haben, aber wenn ich @Inject oder @EJB in meiner MVC-Controller, was falsch gehen los?

Frühling bietet integrierte in Unterstützung „bei inject“ von JSR-330 und bietet auch etwas Magie für @EJB. Wenn das alles ist für Sie suchen, wird Frühling arbeiten. Aber das ist einfach nicht, was CDI (JSR-299) gibt Ihnen.

Andere Tipps

Eine andere Möglichkeit wäre, JAX-RS als Controller zu verwenden (mit der Jersey Implementierung Sie die Kontrolle an eine JSP weiterleiten kann), und verwenden Sie JSP für Ihre Ansicht. Auf diese Weise würden Sie sich keine Sorgen machen müssen über Spring mit Java EE integriert wird.

Zum Beispiel könnten Sie einen Homecontroller haben:

@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);
    }
}

Dies würde zu einer JSP direkt genannt home.jsp, und Sie wäre in der Lage Ihre Daten auf dem JSP über das Request-Objekt zu erhalten. Beachten Sie, dass JAX-RS für RESTful Web Service verwendet wird, so zu verstehen, was in dem Code wird unter Sie ein Verständnis von REST haben müßten.

Mit CDI von Spring wird erläutert, wie bauen eine CDI-to-Federbrücke mit einem BeanFactoryPostProcessor der Einfuhren alle Bohnen aus einem CDI BeanManager in einen Spring-Anwendungskontext.

Pascal ist zu Recht sagen, haben Sie die Wahl zwischen Frühling DI und CDI, aber mit diesem Ansatz können Sie die Wahl pro Modul .

In einem typischen IST Layout gibt es eine Web-Modul eine Reihe von Service und Persistenz-Module in WEB-INF / lib verwenden. Mit der CDI-to-Federbrücke können Sie die WEB-INF / lib-Module in CDI Bean Archive drehen, während das Web-Modul ist nicht ein Bean-Archiv und verwendet nur Frühling DI.

Die Brücke greift auf den CDI BeanManager über JNDI und schafft eine Feder Fabrik Bohne für jeden CDI Bean.

Ich verwende diese Brücke genau für Ihren Anwendungsfall: ein Spring MVC Web-Frontend mit einem Java EE 6 Back-End-Integration

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top