2014-02-27 60 views
1

我將在一個Java項目上工作,並希望使用Spring IOC進行bean管理。Spring NON MVC項目配置 - 最佳實踐

這不是一個web項目,但會給我一個jar文件在最後只是一個簡單的Java項目。

我的問題是,在我的應用程序中,我想使用Spring IoC來獲取類的實例以調用它們各自的方法。爲此目的,我需要獲得使用

CalenderDao calenderDao = (CalenderDao) ApplicationContextUtils 
       .getApplicationContext().getBean("calenderDao"); 
     calenderDao.getCalenderUpdate(); 

Spring上下文現在,如果我在其它的類需要這個bean過,我要在那裏複製和粘貼同樣的事情也一樣。

CalenderDao calenderDao = (CalenderDao) ApplicationContextUtils 
       .getApplicationContext().getBean("calenderDao"); 
     calenderDao.getCalenderUpdate(); 

我的問題是,我需要在每個文件中創建一個ApplicationContext來在整個應用程序中獲取一個bean。或者是否有任何其他的和最好的事情要執行。如果我正在做這樣的事情如何可以在應用程序中使用setter注入或構造函數注入。

在web應用程序中,這是退出簡單的我們加載上下文一次,一切工作正常,但如何做到這一點在非網站,我們沒有web.xml文件來實例化上下文。

請幫忙如何豆在非網絡項目中使用Spring管理。

回答

2

Spring並不只是爲web應用程序設計的。

只是因爲它不是你不需要回落到「商式」的Web應用程序。您不需要web.xml來初始化應用程序上下文。

使用你的主要方法創建一個應用程序上下文,並與你的工作豆,你會爲一個Web應用做。你可以使用自動裝配和春天的所有小工具。

一旦上下文被初始化,調用你的主類來啓動你的應用程序,例如在刷新事件的幫助下。從那裏你幾乎沒有必要使用getBean。

顯然你沒有會話和請求範圍內,但單和原型是可用的。

只要看看春天的文檔。

1

無論您在應用程序中需要ApplicationContext,只需使用ApplicationContextAware接口即可實現該類。

這裏說

public class CalenderService implements ApplicationContextAware{ 

    private ApplicationContext context;//declare this so you can use it 

} 

因爲它是你需要在此改變它的方法接口

public void setApplicationContext(ApplicationContext context){ 
    this.context=context; // here ApplicationContext gets injected. 
}