[英]Spring MVC Bean Update (Execute the bean again)
所以我是 Spring MVC 的新手,我需要在確定的操作后更新一個 bean。
示例:我定義了以下 bean:
@Bean
public LocaleResolver localeResolver(){
CookieLocaleResolver resolver = new CookieLocaleResolver();
resolver.setDefaultLocale(new Locale("en"));
return resolver;
}
用戶登錄系統后,我需要更新 bean 以匹配他的配置文件中設置的語言。 那么,登錄后如何再次調用(執行)bean? 謝謝。
這不是處理用戶語言環境的標准方法。 我建議將此信息與用戶本身一起存儲在數據庫中,只要該特征是可變的並且在多個用戶之間變化。
但是,在運行時更新 bean 的最佳方法之一是使用DefaultSingletonBeanRegistry
,當前版本的 Spring(據我所知為 5.2.x)仍然支持它。 實際上,您所做的是刪除 bean 並使用新值重新注冊它。
從可幫助您獲取DefaultSingletonBeanRegistry
的ConfigurableApplicationContext
開始。
@Autowired
ConfigurableApplicationContext context;
一個bean的刪除和注冊代碼應該是這樣的:
LocaleResolver localeResolver = ... // a new bean to be registered, up to you :)
DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) context.getBeanFactory();
registry.destroySingleton("localeResolver");
registry.registerSingleton("localeResolver", localeResolver);
我實際上從未使用過它,但我發現了一些可能有用的示例: Programcreek 。
重要提示:我擔心這種方式不會更新/刷新已經注冊的舊注入 bean。 我希望有人可以確認/反駁這一說法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.