2010-09-20 40 views
3

我正在使用Spring,Spring Security,Tomcat和MySQL開發Java webapp。現在我仍然處於對數據庫進行相當頻繁更改的階段,以及重新創建數據庫以清除測試數據。最終,這不會是一個問題,但是有沒有辦法讓一個實例化的bean或執行的代碼來引導webapp?我希望能夠利用IoC功能來使用我的應用程序用於填充原始用戶帳戶的相同功能,例如,PasswordEncoder。此外,我想這個腳本創建數據庫,如果它不存在等。有沒有辦法做到這一點?有沒有比我建議的更好的方法?我沒有和我剛剛描述的算法結婚,但這是我能想到的最好的方式來表達我在找的東西。Tomcat中的Webapp引導代碼

在此先感謝!

回答

3

創建數據庫模式的好方法是liquibase。您也可以插入數據。 Liquibase通過bean提供了Spring集成:liquibase.spring.SpringLiquibase,因此數據庫將在需要時進行更新。

+0

這是一個非常酷的框架。我一定會考慮這個。這不是我想要的,但我需要能夠調用來自Java的插入查詢來保證我使用相同的編碼器。 – 2010-09-20 23:52:14

+0

您在開發期間使用liquibase所做的所有工作都可以適應您的生產環境進行更改。這是一個偉大的軟件 – 2012-12-11 21:18:15

1

你可以實現與ApplicationListener接口的bean。

執行你必要的行動,當您收到ContextRefreshedEvent

這種方法的好處是,該框架將已經裝起來爲你的背景和你所有的豆子,所以你可以訪問他們所有什麼都引導你想要做的事。

的缺點是,此事件被觸發初始化和刷新

ContextRefreshedEvent 當ApplicationContext初始化或刷新發布。這裏初始化意味着所有的bean都被加載,單例被預先實例化並且ApplicationContext可以使用。