簡體   English   中英

以編程方式修改Spring Bean

[英]Modifying Spring beans programmatically

我目前正在開發一個Web應用程序。 我了解Spring的一些基礎知識,但是我沒有做太多的工作,因此我決定提高自己的Spring技能,但遇到了一個我找不到真正好的解決方案的問題。

我想在我的應用程序中實現一項功能,該功能使用戶無需觸摸任何配置文件即可配置所有內容(例如,spring bean),基本上,想要部署,啟動和使用該應用程序的人應該只復制.WAR文件例如tomcat,所有配置都應在應用內完成(例如在OpenFire中)。

因此,我想用戶將應用程序部署到某個URL並通過UI進行所有操作,一旦將所有詳細信息都存儲在cfg文件中,重新啟動應用程序並進行配置,系統就會詢問他一些參數(例如數據庫連接詳細信息)過程結束了。

我想在Spring Bean中擁有所有配置詳細信息,但是我發現我無法真正通過編程方式更改它們(一種解決方案是“從春季開始”修改文件並在病房后重新加載應用上下文-是好方法?)。 另一個方法是例如將XML文件存儲在WEB-INF中,並在從用戶那里收集數據后將其保存在其中,但是如何將非Bean文件中的數據加載到應用程序上下文中呢?

有任何建議!

您可以將這些值保留在屬性文件中。 您可以在spring bean中使用屬性文件值。
您也可以使用通過UI接受的用戶輸入來更新屬性文件中的值。

您可以通過ApplicationContext類及其子類訪問ever bean。 在這里,您可以要求所有豆的吸氣劑和吸氣劑的所有權。 但是,值得注意的是,已經創建了應用程序上下文,並且BeanFactory也已經創建了,因此您將錯過一些生命周期步驟。

在您自己的bean上設置與生命周期無關的屬性當然是可行的,但是我不建議您在上下文設置並啟動后嘗試更改“基礎結構” bean的屬性(例如,事務管理,程序包掃描)。 。

如果您的目標用戶是天真的用戶,則可以提供修改屬性文件的功能,然后以編程方式重新加載Web應用程序,並讓Spring上下文使用PropertyPlaceholderConfigurerPropertyOverrideConfigurer加載其屬性。

如果您的目標用戶是“內部” IT熟練用戶,那么您也可以使用JMX,它允許您使用jconsole或類似方法更改上下文中每個bean的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM