2012-11-08 54 views
7

我創建了一個ApplicationContextInitializer實現來加載來自custome源(ZooKeeper)的屬性並將它們添加到ApplicationContext的屬性來源列表中。ApplicationContextInitializer在非web的Spring上下文中?

我能找到的所有文檔都與Spring web-apps有關,但我想在獨立的消息應用程序中使用它。

是否正確的方法來實例化我的實現,創建上下文,然後將上下文傳遞給我的實現「手動」?或者我錯過了一些自動功能的框架,將我的初始值設定項應用於我的上下文?

回答

8

我發現它很簡單,足以實現SpringMVC的初始化上下文環境的初始化。在正常的應用程序上下文中,沒有任何內容使用ApplicationContextInitializer,因此您必須自行執行它。

沒問題,儘管在正常的J2SE應用程序中,如果您擁有上下文加載程序塊的所有權,您將有權訪問生命週期的每個階段。

// 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); 

我希望這有助於!

0

不清楚其他版本,但在春季4:

AbstractApplicationContext ctx = new AnnotationConfigApplicationContext(yourConfig.class); 
相關問題