User Tools

Site Tools


wiki:epims4_1:developer:epcorespring

Utilisation de Spring

Configuration

Les différentes configurations nécessaires à Spring sont faites dans des fichiers XML : springContext.xml, springAppContext.xml et springDataSource.xml.

  • springContext.xml : C'est le point d'entrée, ce fichier créée un ApplicationContext, ayant epCore.context comme id, dans lequel est chargé tout l'environnement contenu dans les deux autres fichiers.
  • springAppContext.xml : Contient la définition des beans de eP-Core, à savoir les bean DAO utilisé par les beans Services également définis dans ce fichier. C'est aussi dans ce fichier que l'on trouve la configuration relative à hibernate. On retrouve dans ce fichier les définitions
    • Des propriétés de hibernate via le bean SessionFactory,
    • Du bean HibernateTemplate utilisé par les DAO
    • Les différents beans DAO
    • Les différents bean de services ainsi que les beans TransactionManager associés.
  • springDataSource.xml : Définition de la datasource permettant d'accéder à la BD et de la ressource JMS utilisé. Ce module étant déployé sur Geronimo, on peut référencé la datasource (DS JNDI) et la ressource JMS déclarées au niveau de ce serveur.

Partage du contexte

Les modules ePims déclaré dans l'application EAR partageront le context spring définit dans eP-Core et donc les beans 'singleton' définis dans ce contexte. Voir la doc de l'architecture ePims …

Pour un module d'application web, il est nécessaire de définir le context spring parent que l'on souhaite utiliser dans le fichier web.xml:

    <!-- Spring Context -->
    <context-param>
      <param-name>locatorFactorySelector</param-name>
      <param-value>classpath*:springContext.xml</param-value>
    </context-param>
    <context-param>
      <param-name>parentContextKey</param-name>
      <param-value>span>epCore.context</param-value>
    </context-param>
    <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

L'initialisation du contexte Spring peut aussi se faire dans hors partage du contexte (pour les tests JUnit par exemple) il est également possible d’utiliser ldans une application :

   String[] confFiles = {"/springAppContext.xml","/springDataSource.xml"};
   ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(confFiles);

Accès aux beans

Dans le code des applications utilisant le module eP-Core, lorsque l'on souhaite accéder à un des beans(services) définis dans spring, on utilise la classe ServiceLocator :

    ServiceLocator locator = new ServiceLocator(context); //Contexte initialisé par l'application 
    IStudyService service= locator.getStudyService();

Dans le cas d'application Web initialisé comme indiqué ci-dessus, l'accès aux contexte Spring se fait via le servlet. Dans le cas de JSF

ServletContext servletContext = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext());
ApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
ServiceLicator serviceLocator_ = new ServiceLocator(context);





(Continuez vers la suite de la documentation ⇒ epcorehibernate)

wiki/epims4_1/developer/epcorespring.txt · Last modified: 2008/10/02 10:21 (external edit)