我决定将架构JPA-EJB-JSF中的应用程序迁移到JPA-Spring-JSF。
在迁移到春季期间,我也启用了CDI。
在迁移所有层之后,我处于控制器层的级别。
在Java EE中,我使用@PostConstruct
注释了方法,这些方法允许我初始化变量,测试应用程序的配置。这些方法在setter / getters之前运行。
示例Java EE代码:
@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
}
在Spring上迁移之后,我已经读过@PostConstruct
只在上下文中初始化bean之后执行。因此我发现应该在应用程序开始时执行的方法不再运行在使用我的控制器打开网页时。
我想知道如何在不对代码进行太多更改的情况下实现这一点?
这里是代码Spring:
@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
}
由于