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

SpringBoot在啟動(dòng)類(lèi)main方法中調(diào)用service層方法報(bào)“空指針異?!暗慕鉀Q辦法

 更新時(shí)間:2024年06月27日 08:40:39   作者:芒果不是盲  
這篇文章主要介紹了SpringBoot在啟動(dòng)類(lèi)main方法中調(diào)用service層方法報(bào)“空指針異?!暗慕鉀Q辦法,大多數(shù)情況下,我們使用Springboot是創(chuàng)建一個(gè)maven項(xiàng)目,然后通過(guò)controller層的接口調(diào)用,但也有特殊情況,文章介紹的非常詳細(xì),需要的朋友可以參考下

大多數(shù)情況下,我們使用Springboot是創(chuàng)建一個(gè)maven項(xiàng)目,然后通過(guò)controller層的接口調(diào)用。但也有特殊情況,比如將需要傳參的接口直接打包成可執(zhí)行jar包運(yùn)行,這個(gè)時(shí)候,就需要在啟動(dòng)類(lèi)main方法中注入Bean,調(diào)用Service層方法使用。
按照常規(guī)service方法調(diào)用實(shí)現(xiàn),報(bào)錯(cuò)如下:

報(bào)錯(cuò)原因:是service注入為空,service無(wú)法導(dǎo)入到非controller層中去

解決方法:注入bean

1、首先建立一個(gè)Spring工具類(lèi):SpringUtil

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringUtil.applicationContext == null){
            SpringUtil.applicationContext  = applicationContext;
        }
    }


    //獲取applicationContext
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    //通過(guò)name獲取 Bean.
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    //通過(guò)class獲取Bean.
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }

    //通過(guò)name,以及Clazz返回指定的Bean
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }
}

ApplicationContextAware :當(dāng)一個(gè)類(lèi)實(shí)現(xiàn)ApplicationContextAware接口后,這個(gè)類(lèi)就可以方便獲得ApplicationContext中所有的bean。簡(jiǎn)言之,就是這個(gè)類(lèi)可以直接獲取spring配置文件中所有有引用到的bean對(duì)象。

ApplicationContext:ApplicationContext是由BeanFactory派生而來(lái)的,BeanFactory負(fù)責(zé)配置、創(chuàng)建、管理Bean,是Spring容器最基本的接口;
BeanFactory的許多功能需要變成實(shí)現(xiàn),而ApplicationContext中則可以通過(guò)配置的方式實(shí)現(xiàn),即:
在構(gòu)建容器的時(shí)候,ApplicationContext創(chuàng)建對(duì)象采用的策略是立即加載的方式,即只要一讀取完配置文件就立即創(chuàng)建配置文件中配置的對(duì)象。BeanFactory采用的是延遲加載的方式,什么時(shí)候根據(jù)id獲取對(duì)象了,什么時(shí)候才真正地創(chuàng)建對(duì)象。

2、在main方法中調(diào)用service,注意要啟動(dòng)入口類(lèi) SpringApplication.run(TextCutApplication.class, args);

加載Spring配置文件時(shí),如果Spring配置文件中所定義的類(lèi)實(shí)現(xiàn)了ApplicationContextAware接口,那么在加載Spring配置文件時(shí),會(huì)自動(dòng)調(diào)用ApplicationContextAware接口中的setApplicationContext方法,獲得ApplicationContext對(duì)象。
ApplicationContext對(duì)象是由Spring注入的,前提必須在Spring配置文件中指定該類(lèi)。

到此這篇關(guān)于SpringBoot在啟動(dòng)類(lèi)main方法中調(diào)用service層方法報(bào)“空指針異常“的解決辦法的文章就介紹到這了,更多相關(guān)SpringBoot service空指針異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 分析HashMap 的 JDK 源碼

    分析HashMap 的 JDK 源碼

    這篇文章主要分析了HashMap 的 JDK 源碼,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-10-10
  • Springboot微服務(wù)分布式框架Rouyi Cloud權(quán)限認(rèn)證(登錄流程之token解析)

    Springboot微服務(wù)分布式框架Rouyi Cloud權(quán)限認(rèn)證(登錄流程之token解析)

    這篇文章主要介紹了Springboot微服務(wù)分布式框架Rouyi Cloud權(quán)限認(rèn)證的相關(guān)知識(shí),重點(diǎn)講解下整個(gè)框架的入口,登錄流程之token解析,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 詳解使用Spring Boot的AOP處理自定義注解

    詳解使用Spring Boot的AOP處理自定義注解

    本篇文章主要介紹了詳解使用Spring Boot的AOP處理自定義注解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Spring boot 添加jsp支持配置詳解

    Spring boot 添加jsp支持配置詳解

    本篇文章主要介紹了Spring boot 添加jsp支持配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java數(shù)組的擴(kuò)容代碼示例

    Java數(shù)組的擴(kuò)容代碼示例

    這篇文章主要介紹了Java數(shù)組的擴(kuò)容,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-09-09
  • Java使用EasyExcel動(dòng)態(tài)添加自增序號(hào)列

    Java使用EasyExcel動(dòng)態(tài)添加自增序號(hào)列

    本文將介紹如何通過(guò)使用EasyExcel自定義攔截器實(shí)現(xiàn)在最終的Excel文件中新增一列自增的序號(hào)列,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 使用SpringBoot+EasyExcel+Vue實(shí)現(xiàn)excel表格的導(dǎo)入和導(dǎo)出詳解

    使用SpringBoot+EasyExcel+Vue實(shí)現(xiàn)excel表格的導(dǎo)入和導(dǎo)出詳解

    這篇文章主要介紹了使用SpringBoot+VUE+EasyExcel?整合導(dǎo)入導(dǎo)出數(shù)據(jù)的過(guò)程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • springboot?yml配置文件值注入方式

    springboot?yml配置文件值注入方式

    這篇文章主要介紹了springboot?yml配置文件值注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • JDBC數(shù)據(jù)庫(kù)連接步驟解析

    JDBC數(shù)據(jù)庫(kù)連接步驟解析

    這篇文章主要介紹了JDBC數(shù)據(jù)庫(kù)連接步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Spring Native實(shí)現(xiàn)0.059s啟動(dòng)一個(gè)SpringBoot項(xiàng)目

    Spring Native實(shí)現(xiàn)0.059s啟動(dòng)一個(gè)SpringBoot項(xiàng)目

    Spring Native是Spring框架的一個(gè)子項(xiàng)目,旨在提供一種將Spring應(yīng)用程序編譯為本地可執(zhí)行文件的方法,從而提高啟動(dòng)時(shí)間和資源效率,本文主要介紹了Spring Native實(shí)現(xiàn)0.059s啟動(dòng)一個(gè)SpringBoot項(xiàng)目,感興趣的可以了解一下
    2024-02-02

最新評(píng)論

那曲县| 南漳县| 嵩明县| 永州市| 二手房| 资中县| 洛隆县| 曲麻莱县| 苗栗市| 林州市| 丰原市| 阿巴嘎旗| 东台市| 海宁市| 亳州市| 紫金县| 蒲城县| 华亭县| 格尔木市| 佛学| 深州市| 汉中市| 红河县| 贺州市| 西和县| 河北省| 吉木乃县| 神池县| 洛南县| 志丹县| 桐乡市| 安多县| 固镇县| 巴林右旗| 突泉县| 湘阴县| 望江县| 红河县| 台湾省| 平顺县| 辽中县|