日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【SpringBoot】在普通类中获取spring容器中的bean

發布時間:2024/4/14 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SpringBoot】在普通类中获取spring容器中的bean 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這段時間公司搞封閉開發,做一個聯通總部的客服系統項目,是基于springboot的。在開發工程中遇到一個頁面datagrid數據排序的功能,因為有多個表的數據都要用到排序功能,于是我就寫了一個排序功能的公共實現類,方便大家使用。在寫實現類的過程中學習了在普通類中獲取spring容器中的bean的方法。

如果我們需要在一個類中使用spring提供的bean對象,那么我們需要把這個bean注入到spring容器中,交給spring容器來管理。但是在實際應用中我們往往會碰到在普通的java類中,需要直接使用spring提供的對象或者說有一些對象不需要交給spring容器來管理,但是需要用到spring容器中的一些對象。

如果這是spring框架的獨立應用程序,我們通過ApplicationContext對象即可獲取到:

ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml"); applicationContext.getBean("beanId");

但是在實際應用中,我們做的項目大多是web application,在web application中我們啟動spring容器是通過在web.xml中進行配置,這樣就不適合使用上面的方式在普通類去獲取對象了,因為這樣做就相當于加載了兩次spring容器,而我們想是否可以通過在啟動web服務器的時候,就把Application放在某一個類中,我們通過這個類在獲取,這樣就可以在普通類獲取spring bean對象了。

在springboot中有一種實現方式,可以很方便的獲取到ApplicationContext對象:SpringBoot平臺下采用ApplicationContextAware的方式完成ApplicationContext實例的獲取,并通過ApplicationContext實例完成對Spring管理的Bean實例手動獲取

創建一個實體類SpringUtil并實現ApplicationContextAware接口,重寫接口內的setApplicationContext方法來完成獲取ApplicationContext實例的方法。
如下為ApplicationContextAware接口:

具體實現請參見我的Github:SpringBoot在普通類中獲取spring容器中的bean

注意兩個地方:
1、SpringUtil類上的 @Component注解必須要有,否則spring就不會自動調用setApplicationContext方法來為我們設置上下文實例;
2、SpringUtil類要在springboot可以掃描到的包下;

總結

以上是生活随笔為你收集整理的【SpringBoot】在普通类中获取spring容器中的bean的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。