IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Frameworks Web Java Discussion :

Combiner Spring et JSF ?


Sujet :

Frameworks Web Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Combiner Spring et JSF ?
    Bonjour,
    Je suis entrain de développer une application JAVA EE et j'ai pas encore décidé de ce qui est architecture applicative. Je vois que beaucoup de développeurs optent pour la combinaison de JSF (couche présentation) et SPRING (couhe métier).

    Je voudrai savoir quel est l'interet de cette combinaison ? si j'utilise JSF+SPRING au lieu de SPRING MVC+SPRING , qu'elle avantage présentera il pour mon application ?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    J'irais moi plus loin, si tu développez sur j2EE7, tu peux retirer spring de l'équation. EJB + CDI + JSF ça marche très bien pour des fonctionnalités similaires

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    De manière générale, tu peux soit utiliser Spring soit EJB3 pour la couche métier, les 2 solutions sont très abouties.
    Pour la couche présentation, JSF + Primefaces qui est une bibliothèque de composants vraiment sympa.
    Ensuite, il y a le débat possible sur le moyen d'injecter tes dépendances : JSF ou CDI...
    Il semble que CDI soit largement favorisé par la communauté, mais j'y mettrais un bémol, il faut la version 2.2 de JSF, sinon, il va te manquer le scope VIEW, très intéressant dans bien des cas.

    Autre point qui peut avoir son importance.
    Avec les EJB, si tu optes pour des transactions JTA (défaut), il faut faire attention avec les propriétés en Lazy loading. En effet, dès que tu retourneras à la couche présentation (JSF), les entités seront détachées...
    Dans la pratique, dans ce cas, il est préférable d'utiliser une couche DTO qui soit le reflet des données utilisées par la vue.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    J'irais moi plus loin, si tu développez sur j2EE7, tu peux retirer spring de l'équation. EJB + CDI + JSF ça marche très bien pour des fonctionnalités similaires
    Même avec JEE 6 : jamais eu besoin de Spring moi.

    Citation Envoyé par OButterlin Voir le message
    Il semble que CDI soit largement favorisé par la communauté, mais j'y mettrais un bémol, il faut la version 2.2 de JSF, sinon, il va te manquer le scope VIEW, très intéressant dans bien des cas.
    Vous le dites et je vous fais toujours confiance mais en fait je n'ai jamais utilisé @ViewScoped non plus... Avec FacesServlet qui gère tout (sauf les cas particuliers de redirection, où il faut écrire une Servlet assez laide), tout est géré et reste bien dans la session de l'utilisateur. Ça dépend bien sûr du but de l'application mais je ne voudrais pas qu'un objet puisse être modifié par un autre utilisateur entre deux vues de la même session.

    Citation Envoyé par OButterlin Voir le message
    Avec les EJB, si tu optes pour des transactions JTA (défaut), il faut faire attention avec les propriétés en Lazy loading.
    Des collègues ont utilisé FetchType.LAZY, ils ne se sont jamais plaint.

    Je vous prie de m'excuser (encore) de me mêler dans la discussion mais je voudrais apprendre un peu plus entre deux traductions,
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mishulyna Voir le message
    Vous le dites et je vous fais toujours confiance mais en fait je n'ai jamais utilisé @ViewScoped non plus... Avec FacesServlet qui gère tout (sauf les cas particuliers de redirection, où il faut écrire une Servlet assez laide), tout est géré et reste bien dans la session de l'utilisateur. Ça dépend bien sûr du but de l'application mais je ne voudrais pas qu'un objet puisse être modifié par un autre utilisateur entre deux vues de la même session.
    Le scope view est vraiment super intéressant avec les mises à jour assynchrones (ajax) ce qui est le cas le plus fréquent quand on utilise Primefaces. Tant qu'on reste sur une vue, les données restent, dès qu'on la quitte, elle sont purgées.
    Le problème du scope session c'est que justement, 2 accès concurrents (par exemple 2 onglets du navigateur sur la même application) vont utiliser le même bean côté serveur et ça, c'est une source d'incohérence des données monstrueuse.
    Citation Envoyé par Mishulyna Voir le message
    Des collègues ont utilisé FetchType.LAZY, ils ne se sont jamais plaint.
    Ils utilisent les EJB, un conteneur Spring ou le conteneur de servlet ? Parce que ça change pas mal la problématique dans une application web...

    J'utilise également le Lazy loading, ce n'est pas que je m'en plains, c'est juste qu'il faut faire attention parce que dès qu'on revient à la couche présentation, les entités sont détachées et il n'y a alors plus moyen d'accéder à des données lazy non initialisées.
    On s'y fait, et en pratique, on fait une couche supplémentaire (DTO) qui est le reflet des données utilisées par la couche présentation.
    Même si cette couche est un peu "chiante" à faire parce que souvent une copie du modèle entity, elle a le gros avantage d'abstraire l'application du modèle physique des données. On peut faire évoluer ce dernier plus facilement sans remettre en cause les applications existantes. Un autre avantage est que seules les données utilisées sont décritent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ils utilisent les EJB, un conteneur Spring ou le conteneur de servlet ? Parce que ça change pas mal la problématique dans une application web...
    Les EJB, Servlet et... GlassFish. Merci beaucoup pour vos explications très intéressantes !
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    J'oubliais un point, c'est quoi le problème de redirect avec FacesServlet ?
    J'utilise la redirection systématiquement et n'ai aucun problème, du coup, je m'interroge
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Ah, c'est le cas particulier de l'utilisateur qui confirme son inscription sur le site en cliquant sur un lien reçu par mail : il faut valider les données et afficher une page en rapport avec le résultat de la validation + un lien pour rediriger l'utilisateur vers la page d'accueil. Et ça je n'ai pas réussi faire avec Faces.
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Lorsqu'une action est appelée, elle peut renvoyer l'url en retour.
    Pour une redirection, il suffit d'ajouter à la fin de ton url "faces-redirect=true"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    public String monAction()
    {
       ...
       return "/maPage.xhtml?faces-redirect=true";
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    En fait l'URL peut avoir un rapport avec les données du client, que je ne connais pas à l'avance. Mais peut-être je n'ai pas exploré toutes les possibilités.
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  11. #11
    Membre confirmé Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Points : 466
    Points
    466
    Par défaut
    Moi aussi j'ai décidé de migrer une application JEE vers Spring juste parce que je veux exécuter l'application dans un serveur léger donc tomcat.
    J'avoue que la migration n'est pas aisé entre la gestion des transactions,le cycle de vie des objets par Spring et JSF.
    Mais de mon expérience il vaux mieux déjà utiliser JSF 2.2 car il est aisé de manipuler les CDI qui peuvent même directement remplacé la DI spring ou EJB.
    Ce qui ne me tue pas me rend plus fort.

  12. #12
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 153
    Points : 227
    Points
    227
    Par défaut
    Je m'immisce ici pour savourer le managed bean de jsf 2.
    Ça c'est un sacré apport.. keep it simple.
    Le reste c'est de la présentation..

Discussions similaires

  1. combiner spring et jsf dans une application web
    Par encours dans le forum JSF
    Réponses: 1
    Dernier message: 28/02/2013, 11h33
  2. Spring MVC + JSF
    Par *alexandre* dans le forum Spring Web
    Réponses: 0
    Dernier message: 14/09/2008, 10h57
  3. Réponses: 1
    Dernier message: 03/06/2008, 20h36
  4. Faut-il combiner Spring avec Struts ou utiliser Spring MVC ?
    Par micanti dans le forum Frameworks Web
    Réponses: 3
    Dernier message: 23/04/2007, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo