最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解SpringBoot靜態(tài)方法獲取bean的三種方式

 更新時間:2021年10月22日 09:29:12   作者:chilx  
本文主要介紹了詳解SpringBoot靜態(tài)方法獲取bean的三種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

方式一  注解@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
 * @date: 2019/7/23
 * @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í)行任何初始化。此方法必須在將類放入服務之前調用。支持依賴關系注入的所有類都必須支持此注釋。即使類沒有請求注入任何資源,用 PostConstruct 注釋的方法也必須被調用。只有一個方法可以用此注釋進行注釋。

應用 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
 * @date: 2019/7/23
 * @version: 1.1.0
 */
@SpringBootApplication
public class Application {
    public static ConfigurableApplicationContext ac;
    public static void main(String[] args) {
       ac = SpringApplication.run(Application.class, args);
    } 
}

調用方式

/**
 * @author: clx
 * @date: 2019/7/23
 * @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
 * @date: 2019/7/23
 * @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> T  getBean(Class<T> clazz) {
        return applicationContext != null?applicationContext.getBean(clazz):null;
    }
}

調用方式

    /**
     * 方式三
     */
    @Test
    public void method_3() {
        AutoMethodDemoService autoMethodDemoService = StaticMethodGetBean_3.getBean(AutoMethodDemoService.class);
        String test3 = autoMethodDemoService.test3();
        System.out.println(test3);
    }

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

到此這篇關于詳解SpringBoot靜態(tài)方法獲取bean的三種方式的文章就介紹到這了,更多相關SpringBoot靜態(tài)方法獲取bean內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring Boot設置支持跨域請求過程詳解

    Spring Boot設置支持跨域請求過程詳解

    這篇文章主要介紹了Spring Boot設置支持跨域請求過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot 請求參數(shù)忽略大小寫的實例

    SpringBoot 請求參數(shù)忽略大小寫的實例

    這篇文章主要介紹了SpringBoot 請求參數(shù)忽略大小寫的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代碼

    SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代碼

    這篇文章給大家介紹了SpringBoot使用classfinal-maven-plugin插件加密Jar包的實例,文中通過代碼示例和圖文講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Java Hashtable機制深入了解

    Java Hashtable機制深入了解

    HashTable是jdk 1.0中引入的產物,基本上現(xiàn)在很少使用了,但是會在面試中經(jīng)常被問到。本文就來帶大家一起深入了解一下Hashtable,需要的可以參考一下
    2022-09-09
  • Java?延時隊列及簡單使用方式詳解

    Java?延時隊列及簡單使用方式詳解

    這篇文章主要介紹了Java延時隊列簡單使用方式,通過本文學習知道延時隊列是什么可以用來干什么,本文通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • SpringBoot 實戰(zhàn) 之 優(yōu)雅終止服務的方法

    SpringBoot 實戰(zhàn) 之 優(yōu)雅終止服務的方法

    本篇文章主要介紹了SpringBoot 實戰(zhàn) 之 優(yōu)雅終止服務的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • J2SE基礎之命令行中編寫第一個 Hello World

    J2SE基礎之命令行中編寫第一個 Hello World

    “Hello World”程序指的是只在計算機屏幕上輸出“Hello, World!”(意為“世界,你好!”)這行字符串的計算機程序。hello world作為所有編程語言的起始階段,占據(jù)著無法改變的地位,所有的編程第一步就在于此了!經(jīng)典之中的經(jīng)典!hello world!
    2016-05-05
  • java項目中的絕對路徑和相對路徑用法說明

    java項目中的絕對路徑和相對路徑用法說明

    這篇文章主要介紹了java項目中的絕對路徑和相對路徑用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • SpringBoot集成RocketMQ實現(xiàn)消息發(fā)送的三種方式

    SpringBoot集成RocketMQ實現(xiàn)消息發(fā)送的三種方式

    RocketMQ?支持3?種消息發(fā)送方式:?同步?(sync)、異步(async)、單向(oneway),本文就將給大家介紹一下SpringBoot集成RocketMQ實現(xiàn)消息發(fā)送的三種方式文中有詳細的代碼示例,需要的朋友可以參考下
    2023-09-09
  • java?stream使用指南之sorted使用及進階方式

    java?stream使用指南之sorted使用及進階方式

    這篇文章主要介紹了java?stream使用指南之sorted使用及進階方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論

和平区| 筠连县| 寻甸| 建平县| 兴义市| 夏河县| 呼伦贝尔市| 宾阳县| 石阡县| 吐鲁番市| 峨边| 九寨沟县| 大邑县| 冷水江市| 乌鲁木齐市| 永康市| 偏关县| 定边县| 云浮市| 恩平市| 新乡县| 邯郸县| 新巴尔虎左旗| 阜城县| 基隆市| 泌阳县| 丰镇市| 江孜县| 休宁县| 甘洛县| 财经| 景德镇市| 邮箱| 舒城县| 凤山县| 清丰县| 周至县| 怀柔区| 镇赉县| 宁阳县| 平南县|