Bonjour,
J'ai décidé de migrer une application dans l'architecture JPA-EJB-JSF vers JPA-Spring-JSF.
Lors de cette migration vers spring j'ai activé CDI également.
après la migration de toutes les couches je suis au niveau de la couche des controllers.
En JEE j'ai annotés des méthodes avec @PostConstruct qui me permettent d'initialiser des variables,tester des configurations pour les appliqués.Ces méthodes s'exécutent avant avant les setters/getters.
exemple code java ee:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 @ManagedBean(name="classecontroller")
    @SessionScoped
    public class ClasseController implements Serializable {
 
        private Etablissements etablissement;
        private Classe classe = new Classe();
        private Niveau niveau = new Niveau();
        private Personne currentUser;
 
        public ClasseController() {
        }
 
      @PostConstruct
        void initialiseSession() {
               etablissement = new Etablissements();
 
            Etablissements testEtab = null;
            testEtab = (Etablissements) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(GlobalFonctions.ETAB_ACTIF);
            if (testEtab != null) {
                etablissement = testEtab;
            } else {
                etablissement = (Etablissements) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get(GlobalFonctions.ETAB_ACTIF);
            }
        }
// setter getters
    }
Après migration sur Spring j'ai lu que le @PostConstruct ne s'execute qu'après l'initialisation des Beans dans le context.Donc j'ai constaté que mes méthodes s'excutent au démarrage de mon application.Désormais ne s'éxecute pas lors de l'ouverture d'une page web utilisation mon controlleur.
J'aimerai savoir comment je peux implémenter cela sans trop changer le code

Voici le code Spring:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 @Named("classecontroller")
    @SessionScoped
    public class ClasseController implements Serializable {
 
        private Etablissements etablissement;
        private Classe classe = new Classe();
        private Niveau niveau = new Niveau();
        private Personne currentUser;
 
        public ClasseController() {
        }
 
        @PostConstruct
        void initialiseSession() {
               etablissement = new Etablissements();
 
            Etablissements testEtab = null;
            testEtab = (Etablissements) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(GlobalFonctions.ETAB_ACTIF);
            if (testEtab != null) {
                etablissement = testEtab;
            } else {
                etablissement = (Etablissements) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get(GlobalFonctions.ETAB_ACTIF);
            }
        }
// setter getters
    }
Merci