2012-11-08 8 views
7

Utworzono implementację ApplicationContextInitializer, aby załadować właściwości ze źródła custome (ZooKeeper) i dodać je do listy źródeł właściwości obiektu ApplicationContext.ApplicationContextInitializer w kontekście innym niż web Spring?

Cała dokumentacja, którą mogę znaleźć, dotyczy wiosennych aplikacji internetowych, ale chcę go użyć w samodzielnej aplikacji wykorzystującej wiadomości.

Czy to właściwe podejście do tworzenia mojej implementacji, tworzenia kontekstu, a następnie przekazywania kontekstu do mojej implementacji "ręcznie"? Czy też brakuje mi jakiejś funkcji automatycznej w ramach, która zastosuje mój inicjator w moim kontekście?

Odpowiedz

8

Znalazłem to na tyle proste, aby wdrożyć strategię SpringMVC do Inicjalizacji kontekstu poprzez inicjowanie z pustym kontekstem. W normalnych kontekstach aplikacji nie ma niczego, co używa ApplicationContextInitializer, więc musisz go wykonać na własną rękę.

Nie ma problemu, choć w normalnej aplikacji J2SE, ponieważ masz prawo własności do bloku ładującego kontekst, będziesz mieć dostęp do każdego etapu cyklu życia.

// Create context, but dont initialize with configuration by calling 
// the empty constructor. Instead, initialize it with the Context Initializer. 
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); 
MyAppContextInitializer initializer = new MyAppContextInitializer(); 
initializer.initialize(ctx); 

// Now register with your standard context 
ctx.register(com.my.classpath.StackOverflowConfiguration.class); 
ctx.refresh() 

// Get Beans as normal (e.g. Spring Batch) 
JobLauncher launcher = context.getBean(JobLauncher.class); 

Mam nadzieję, że to pomoże!

0

Nie wiem o innych wersjach, ale wiosną 4:

AbstractApplicationContext ctx = new AnnotationConfigApplicationContext(yourConfig.class); 
Powiązane problemy