<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SpringBoot靜態(tài)獲取 bean的三種方式,你學會了嗎?

          共 3615字,需瀏覽 8分鐘

           ·

          2021-11-18 10:40

          來源:blog.csdn.net/showchi/article/details/97005720

          注意:調(diào)用者要被spring管理

          目錄

          • 方式一 ?注解@PostConstruct
          • 方式二 ?啟動類ApplicationContext
          • 方式三 手動注入ApplicationContext

          方式一 ?注解@PostConstruct

          import?com.example.javautilsproject.service.AutoMethodDemoService;
          import?org.springframework.beans.factory.annotation.Autowired;
          import?org.springframework.stereotype.Component;
          ?
          import?javax.annotation.PostConstruct;
          ?
          /**
          ?*?springboot靜態(tài)方法獲取?bean?的三種方式(一)
          ?*?@author:?clx
          ?*?@version:?1.1.0
          ?*/

          @Component
          public?class?StaticMethodGetBean_1?{
          ?
          ????@Autowired
          ????private?AutoMethodDemoService?autoMethodDemoService;
          ?
          ????@Autowired
          ????private?static?AutoMethodDemoService?staticAutoMethodDemoService;
          ?
          ????@PostConstruct
          ????public?void?init()?{
          ????????staticAutoMethodDemoService?=?autoMethodDemoService;
          ????}
          ?
          ????public?static?String?getAuthorizer()?{
          ????????return?staticAutoMethodDemoService.test();
          ????}
          }

          注解@PostConstruct說明

          PostConstruct 注釋用于在依賴關系注入完成之后需要執(zhí)行的方法上,以執(zhí)行任何初始化。此方法必須在將類放入服務之前調(diào)用。支持依賴關系注入的所有類都必須支持此注釋。即使類沒有請求注入任何資源,用 PostConstruct 注釋的方法也必須被調(diào)用。只有一個方法可以用此注釋進行注釋。

          應用 PostConstruct 注釋的方法必須遵守以下所有標準:

          • 該方法不得有任何參數(shù),除非是在 EJB 攔截器 (interceptor) 的情況下,根據(jù) EJB 規(guī)范的定義,在這種情況下它將帶有一個 InvocationContext 對象 ;
          • 該方法的返回類型必須為 void;
          • 該方法不得拋出已檢查異常;
          • 應用 PostConstruct 的方法可以是 public、protected、package private 或 private;
          • 除了應用程序客戶端之外,該方法不能是 static;
          • 該方法可以是 final;
          • 如果該方法拋出未檢查異常,那么不得將類放入服務中,除非是能夠處理異常并可從中恢復的 EJB。

          方式二 ?啟動類ApplicationContext

          實現(xiàn)方式:在springboot的啟動類中,定義static變量ApplicationContext,利用容器的getBean方法獲得依賴對象

          ?
          import?org.springframework.boot.SpringApplication;
          import?org.springframework.boot.autoconfigure.SpringBootApplication;
          import?org.springframework.context.ConfigurableApplicationContext;
          /**
          ?*?@author:?clx
          ?*?@version:?1.1.0
          ?*/

          @SpringBootApplication
          public?class?Application?{
          ????public?static?ConfigurableApplicationContext?ac;
          ????public?static?void?main(String[]?args)?{
          ???????ac?=?SpringApplication.run(Application.class,?args);
          ????}
          ?
          }

          調(diào)用方式

          /**
          ?*?@author:?clx
          ?*?@version:?1.1.0
          ?*/

          @RestController
          public?class?TestController?{
          ????/**
          ?????*?方式二
          ?????*/

          ????@GetMapping("test2")
          ????public?void?method_2()?{
          ????????AutoMethodDemoService?methodDemoService?=?Application.ac.getBean(AutoMethodDemoService.class);
          ????????String?test2?=?methodDemoService.test2();
          ????????System.out.println(test2);
          ????}
          }

          方式三 手動注入ApplicationContext

          手動注入ApplicationContext

          import?org.springframework.beans.BeansException;
          import?org.springframework.context.ApplicationContext;
          import?org.springframework.context.ApplicationContextAware;
          import?org.springframework.stereotype.Component;
          ?
          ?
          /**
          ?*?springboot靜態(tài)方法獲取?bean?的三種方式(三)
          ?*?@author:?clx
          ?*?@version:?1.1.0
          ?*/

          @Component
          public?class?StaticMethodGetBean_3<T>?implements?ApplicationContextAware?{
          ????private?static?ApplicationContext?applicationContext;
          ????@Override
          ????public?void?setApplicationContext(ApplicationContext?applicationContext)?throws?BeansException?{
          ????????StaticMethodGetBean_3.applicationContext?=?applicationContext;
          ????}
          ?
          ????public?static??T??getBean(Class?clazz)?{
          ????????return?applicationContext?!=?null?applicationContext.getBean(clazz):null;
          ????}
          }

          調(diào)用方式

          ????/**
          ?????*?方式三
          ?????*/

          ????@Test
          ????public?void?method_3()?{
          ????????AutoMethodDemoService?autoMethodDemoService?=?StaticMethodGetBean_3.getBean(AutoMethodDemoService.class);
          ????????String?test3?=?autoMethodDemoService.test3();
          ????????System.out.println(test3);
          ????}

          以上三種方式樓主都測試過可以為完美使用

          程序汪資料鏈接

          程序汪接的7個私活都在這里,經(jīng)驗整理

          Java項目分享 最新整理全集,找項目不累啦 06版

          堪稱神級的Spring Boot手冊,從基礎入門到實戰(zhàn)進階

          臥槽!字節(jié)跳動《算法中文手冊》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動總結的設計模式 PDF 火了,完整版開放下載!


          歡迎添加程序汪個人微信 itwang009? 進粉絲群或圍觀朋友圈

          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色电影免费在线观看 | 黄色一级片在线免费观看 | 无码毛片一区二区三区视频免费看 | 精品夜夜澡人妻无码AV | 日韩精品免费观看 |