我想使用spring創建jar庫並將它們導入到我的Web應用程序中。因爲我也在後者中使用了spring,所以我沒有任何問題。關鍵是我想在非春季託管環境中重複使用它。 假設我想在純javaee web應用中使用lib,那麼我不能使用spring自動裝配和打包掃描功能。 我的想法是:在其costructor創建一個簡單的純豆和負載Spring配置:如何在不受彈簧管理的Web應用程序中創建/加載自定義彈簧罐
public class SpringStandalone{
private Client client;
private AnnotationConfigApplicationContext ctx;
public SpringStandalone() {
ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles("test");
ctx.scan("my.package.scan");
ctx.refresh();
client = (Client) ctx.getBean(Client.class);
ctx.destroy();
}
public void send(Object o) {
client.send(o);
}
}
這是正確的方式做到這一點?如果是這樣,我應該如何管理applicationContext destroy(我應該打擾它嗎?)?
在此先感謝您的幫助。
法比奧
好吧,在此期間,我將springStandalone類更改爲單例,以便僅獲得一個實例(如您所建議的那樣)。因爲客戶端必須活着,只要託管的網絡應用程序生活,然後我想毀滅操作匹配應用程序關閉。我對嗎?無論如何謝謝你的回答。 – Pirulino 2014-10-17 19:50:28
是的,如果客戶端bean應該活着,只要應用程序存在,destroy操作應該匹配應用程序關閉。至於單身人士,在我看來,這只是其中一種可能的解決方案,明顯的缺點是這是一個全球變數,其所有的缺陷。另一個注意事項:你想在你的應用程序啓動時檢測你的Spring配置問題,但是單例模式可能會推遲SpringStandalone的創建,直到第一次使用,所以我建議在你的應用程序啓動時進行明確的調用以觸發創建。 – Alexander 2014-10-18 09:54:47
我同意你的意見。謝謝您的幫助。 – Pirulino 2014-10-20 19:06:23