2009-05-20 4 views
4

Je voudrais une classe analogue à ContextLoader/ContextLoaderListener/ContextLoadServlet de spring. Ces classes sont appelées lorsque le serveur d'applications s'initialise et met le contexte configuré en mémoire.Y a-t-il un équivalent à ContextLoader du ressort pour un non-webapp?

Quelle est l'analogie de ceci pour une application qui n'a pas de conteneur qui l'enveloppe? Ceci empêcherait les instanciations multiples, fournirait un emplacement de récupération unifié et ne souffrirait pas non plus de boiterie à double verrouillage contrôlé.

Répondre

1

Le classique est ClassPathXmlApplicationContext:

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
import org.springframework.scripting.Messenger; 

public final class Boot { 

    public static void main(final String[] args) throws Exception { 
     ApplicationContext ctx = new ClassPathXmlApplicationContext("scripting/beans.xml"); 
     Messenger messenger = (Messenger) ctx.getBean("messenger"); 
     System.out.println(messenger); 
    } 
} 

Voir plus here

+0

AbstractApplicationContext n'offre pas vraiment beaucoup de tout ce qui n'est pas un remplacement d'une fonction dans ConfigurableApplicationContext ou ApplicationContext. Généralement, il n'y a aucun intérêt à ne pas déclarer ctx comme la classe concrète complète ou l'une des interfaces. De plus, vous n'avez pas besoin d'utiliser le constructeur du tableau de chaînes si vous ne transmettez qu'un seul fichier de configuration. – Jherico

+0

J'ai pris l'extrait de code de la documentation (référé dans ma réponse). Le composant ApplicationContecxt de Spring a plus qu'une inscription BeanFactory - Automatic BeanPostProcessor et BeanFactoryPostProcessor, un accès pratique à MessageSource (pour i18n) et une publication ApplicationEvent. La documentation déclare officiellement "utiliser un ApplicationContext à moins que vous n'ayez une bonne raison de ne pas le faire". Voir plus à http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#context-introduction-ctx-vs-beanfactory –

+0

J'ai corrigé l'exemple de code –

Questions connexes