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

SpringBoot解決@Component無法注入其他Bean的問題

 更新時間:2021年08月31日 14:38:27   作者:954L  
這篇文章主要介紹了SpringBoot解決@Component無法注入其他Bean的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot @Component無法注入其他Bean

一、現(xiàn)象

在SpringBoot新new一個普通類,習(xí)慣性添加@Component讓Spring掃描。

在@Component修飾的類里注入了其他Bean,運行時提示注入的為null

但這個Bean可以在控制層被引入,在普通類就不行。

二、解決

找了些資料,最后也沒解決注入的問題。

最后的方案就是去掉@Component注解,在new這個普通類時從Spring上下文實例中取出這個Bean賦給成員變量使用。

弊端:這個類非單例

三、代碼如下

ApplicationContextProvider

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component; 
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
 
    /**
     * 上下文對象實例
     */
    private static ApplicationContext applicationContext;
 
    @SuppressWarnings("static-access")
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
 
    /**
     * 獲取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
 
    /**
     * 通過name獲取 Bean.
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }
 
    /**
     * 通過class獲取Bean.
     *
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }
 
    /**
     * 通過name,以及Clazz返回指定的Bean
     *
     * @param name
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    } 
}

IdentityCheckUtil

import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import org.apache.log4j.Logger; 
public class IdentityCheckUtil { 
    private Logger logger = Logger.getLogger(IdentityCheckUtil.class); 
    private UserMapper userMapper; 
    public IdentityCheckUtil() {
        this.userMapper = ApplicationContextProvider.getBean(UserMapper.class);
    } 
    public boolean allowedPass(ChannelHandlerContext ctx, FullHttpRequest fullHttpRequest) {
        System.out.println(userMapper);
    }
}

@Component注解自動注入失效問題

使用@Component聲明 進行自動注入失效

在這里插入圖片描述

@Component,在默認(rèn)情況下只能掃描與控制器在同一個包下以及其子包下的@Component注解,以及能將指定注解的類自動注冊為Bean的@Service@Controller和@ Repository,將接口與對應(yīng)實現(xiàn)類放在了與控制器所在包的同一級目錄下,這樣的注解自然是無法被識別的。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java字符串反轉(zhuǎn)示例分享

    java字符串反轉(zhuǎn)示例分享

    這篇文章主要介紹了將一個字符串進行反轉(zhuǎn)或者字符串中指定部分進行反轉(zhuǎn)的方法,大家參考使用吧
    2014-01-01
  • Netty分布式ByteBuf使用命中緩存的分配解析

    Netty分布式ByteBuf使用命中緩存的分配解析

    這篇文章主要為大家介紹了Netty分布式ByteBuf?使用命中緩存的分配解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • java 接口回調(diào)實例詳解

    java 接口回調(diào)實例詳解

    這篇文章主要介紹了java 接口回調(diào)實例詳解的相關(guān)資料,所謂回調(diào)就是使用java中的多態(tài),需要的朋友可以參考下
    2017-07-07
  • Java?Ribbon與openfeign區(qū)別和用法講解

    Java?Ribbon與openfeign區(qū)別和用法講解

    Ribbon是基于Netflix?Ribbon實現(xiàn)的一套客戶端負載均衡的工具,主要功能是提供客戶端的軟件負載均衡算法和服務(wù)調(diào)用。openfeign對Feign進行了增強,使其支持Spring MVC注解,另外還整合了Ribbon和Nacos,從而使得Feign的使用更加方便
    2022-08-08
  • 解決SpringBoot使用yaml作為配置文件遇到的坑

    解決SpringBoot使用yaml作為配置文件遇到的坑

    這篇文章主要介紹了解決SpringBoot使用yaml作為配置文件遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 復(fù)選框和Struts2后臺交互代碼詳解

    復(fù)選框和Struts2后臺交互代碼詳解

    這篇文章主要介紹了復(fù)選框和Struts2后臺交互代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java 使用Calendar計算時間的示例代碼

    Java 使用Calendar計算時間的示例代碼

    這篇文章主要介紹了Java 使用Calendar計算時間的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • spring boot輸入數(shù)據(jù)校驗(validation)的實現(xiàn)過程

    spring boot輸入數(shù)據(jù)校驗(validation)的實現(xiàn)過程

    web項目中,用戶的輸入總是被假定不安全不正確的,在被處理前需要做校驗。本文介紹在spring boot項目中實現(xiàn)數(shù)據(jù)校驗的過程,通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-09-09
  • 一次線上websocket返回400問題排查的實戰(zhàn)記錄

    一次線上websocket返回400問題排查的實戰(zhàn)記錄

    最近項目中有端對端通信場景,實時性要求較高,考慮后選用了websocket 這一通信協(xié)議,下面這篇文章主要給大家介紹了一次線上websocket返回400問題排查的實戰(zhàn)記錄,需要的朋友可以參考下
    2022-04-04
  • Zookeeper實現(xiàn)分布式鎖代碼實例

    Zookeeper實現(xiàn)分布式鎖代碼實例

    這篇文章主要介紹了Zookeeper實現(xiàn)分布式鎖代碼實例,Zookeeper?分布式鎖應(yīng)用了其?臨時順序節(jié)點?的特性,在Zookeeper中創(chuàng)建一個持久節(jié)點ParentLock,當(dāng)?shù)谝粋€客戶端要獲取鎖時,在ParentLock節(jié)點下創(chuàng)建一個臨時順序節(jié)點,需要的朋友可以參考下
    2023-12-12

最新評論

南乐县| 渭南市| 丰原市| 开化县| 瑞昌市| 忻州市| 莱西市| 营山县| 鹤峰县| 新巴尔虎左旗| 三穗县| 河北省| 乳山市| 永川市| 津南区| 宣化县| 顺昌县| 涪陵区| 英山县| 子洲县| 板桥市| 富川| 恭城| 巫溪县| 乐山市| 韶关市| 建宁县| 洮南市| 邯郸市| 麦盖提县| 大埔区| 宾阳县| 百色市| 泸溪县| 大同市| 彰武县| 玛沁县| 南靖县| 牡丹江市| 宜兰市| 云霄县|