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

Springboot?Filter中注入bean無(wú)效為null問(wèn)題

 更新時(shí)間:2024年05月17日 08:45:51   作者:l梁晴  
這篇文章主要介紹了Springboot?Filter中注入bean無(wú)效為null問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Springboot Filter注入bean無(wú)效為null問(wèn)題

問(wèn)題原因

Web應(yīng)用的啟動(dòng)順序是:

Lisenter->Fliter->Servlet

應(yīng)用程序上下文, 初始化 Fliter的時(shí)候,

還沒(méi)有初始化Servlert

所有沒(méi)有進(jìn)入DispacterServlet的初始化

故在Fliter中使用注解注入bean為空;

解決辦法

添加初始化bean配置,手動(dòng)創(chuàng)建對(duì)象new

代碼如下:

package com.test.config;
 
import com.alibaba.druid.support.http.StatViewServlet;
import com.test.service.RequestFilter;
import javax.servlet.Filter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.DelegatingFilterProxy;
 
/**
 * @author lucasliang
 * @date 08/11/2018 5:56 afternoon filter load before dispathServlet ,so load RequestFilter as a
 * bean,new a RequestFilter
 */
@Configuration
public class FilterConfig {
 
  /*
    *@param: []
    *@return javax.servlet.Filter
    *@author lucasliang
    *@date 20/12/2018
    *@Description filter
   */
  @Bean
  public Filter uploadFilter() {
    return new RequestFilter();
  }
 
 
  /*
    *@param: []
    *@return org.springframework.boot.web.servlet.FilterRegistrationBean
    *@author lucasliang
    *@date 20/12/2018
    *@Description filter
   */
  @Bean
  @SuppressWarnings("unchecked")
  public FilterRegistrationBean testFilterRegistration() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(new DelegatingFilterProxy("uploadFilter"));
    registration.addUrlPatterns("/*");
    registration.addInitParameter("paramName", "paramValue");
    registration.setName("testFilter");
    registration.setOrder(1);
    registration.setEnabled(false);
    return registration;
  }
 
}

其中RequestFilter是手動(dòng)創(chuàng)建的bean

實(shí)現(xiàn)了Filter接口

package com.test.service;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig; 
 
public class RequestFilter implements Filter {
 
  private Logger logger = LoggerFactory.getLogger(Filter.class);
 
 
  @Value(value = "${encodeRules}")
  private String encodeRules; 
 
}

此時(shí),在RequestFilter中使用@Value注解,就可以取到值了,注入bean也相同,會(huì)取到對(duì)應(yīng)的bean。

至此問(wèn)題解決!

關(guān)于Spring中,注入的bean為null的情況

描述問(wèn)題

在寫(xiě)項(xiàng)目的時(shí)候,寫(xiě)了一個(gè)工具類(lèi)或者測(cè)試類(lèi),然后調(diào)用相關(guān)的service層或者dao層的bean,但是通通為null,為啥呢?

問(wèn)題原因

兩種情況會(huì)導(dǎo)致如此問(wèn)題,一個(gè)是工具類(lèi)中的方法為靜態(tài)方法,靜態(tài)方法調(diào)用了bean,但是由于spring的加載機(jī)制,是加載靜態(tài)代碼-》構(gòu)造函數(shù)-》注入bean-》postconstuct的順序執(zhí)行,因此靜態(tài)方法里調(diào)用的bean,并沒(méi)有注入相應(yīng)的bean,因此為空,所以會(huì)出現(xiàn)bean為null的情況。

另一種情況是,調(diào)用工具類(lèi)的時(shí)候,new了一個(gè)工具類(lèi)的實(shí)例,該應(yīng)用里的實(shí)例都是交給spring IOC容器去看管維護(hù)的,現(xiàn)在突然new出來(lái)一個(gè)實(shí)例,spring IOC容器是沒(méi)有去看管他的,所以并不在同一個(gè)上下文中,那么new出來(lái)的這個(gè)類(lèi)里面的實(shí)例方法,當(dāng)然也調(diào)用不到spring IOC上下文里的實(shí)例了,所以當(dāng)你調(diào)用你new出來(lái)的實(shí)例的方法時(shí)候,該方法里調(diào)用的spring的bean,都是沒(méi)有注入的對(duì)象的。

如何解決

解決辦法同樣有兩種,針對(duì)上面說(shuō)的第一個(gè)問(wèn)題的解決辦法是,使用注解@postconstruct的方法,手動(dòng)注入bean,因?yàn)閜ostconstruct的方法,在bean加載完成之后,init之前執(zhí)行,所以在這個(gè)時(shí)間點(diǎn),注入相應(yīng)的bean對(duì)象,就會(huì)生效。

第二種方法是,直接把該工具類(lèi)作為spring的一個(gè)bean組件,使用@component,在業(yè)務(wù)層調(diào)用的時(shí)候,也同樣使用注入的方式注入該工具類(lèi),這樣也可以解決問(wèn)題了。

總結(jié)

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

相關(guān)文章

  • JavaEE之SpringBoot日志使用及說(shuō)明

    JavaEE之SpringBoot日志使用及說(shuō)明

    文章介紹了日志的定義、作用、使用方法、日志框架、日志級(jí)別、日志配置以及使用注解@Slf4j簡(jiǎn)化日志打印的過(guò)程
    2026-01-01
  • 一文詳解SpringBoot響應(yīng)壓縮功能的配置與優(yōu)化

    一文詳解SpringBoot響應(yīng)壓縮功能的配置與優(yōu)化

    Spring Boot的響應(yīng)壓縮功能基于智能協(xié)商機(jī)制,需同時(shí)滿足很多條件,本文主要為大家詳細(xì)介紹了SpringBoot響應(yīng)壓縮功能的配置與優(yōu)化,需要的可以參考下
    2025-03-03
  • SpringBoot集成IP2Region實(shí)現(xiàn)獲取IP地域信息

    SpringBoot集成IP2Region實(shí)現(xiàn)獲取IP地域信息

    IP2Region是一個(gè)高效的離線IP地域查詢(xún)庫(kù),這篇文章主要為大家詳細(xì)介紹了SpringBoot如何集成IP2Region實(shí)現(xiàn)獲取IP地域信息,感興趣的小伙伴可以了解下
    2026-03-03
  • 詳談JSON與Javabean轉(zhuǎn)換的幾種形式

    詳談JSON與Javabean轉(zhuǎn)換的幾種形式

    下面小編就為大家?guī)?lái)一篇詳談JSON與Javabean轉(zhuǎn)換的幾種形式。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • java開(kāi)發(fā)微信公眾號(hào)支付

    java開(kāi)發(fā)微信公眾號(hào)支付

    這篇文章主要給大家結(jié)合微信支付接口開(kāi)發(fā)的實(shí)踐,從獲取用戶(hù)授權(quán)到各主要接口的使用方法等方面介紹微信支付的關(guān)鍵點(diǎn)技術(shù),有需要的小伙伴可以參考下
    2015-08-08
  • Java流程控制順序結(jié)構(gòu)原理解析

    Java流程控制順序結(jié)構(gòu)原理解析

    這篇文章主要介紹了Java流程控制順序結(jié)構(gòu)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java?Spring?Dubbo三種SPI機(jī)制的區(qū)別

    Java?Spring?Dubbo三種SPI機(jī)制的區(qū)別

    這篇文章主要介紹了Java?Spring?Dubbo三種SPI機(jī)制的區(qū)別,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-08-08
  • Mybatis-plus3.4.3下使用lambdaQuery報(bào)錯(cuò)解決

    Mybatis-plus3.4.3下使用lambdaQuery報(bào)錯(cuò)解決

    最近在使用lambdaQuery().eq(CommonUser::getOpenId, openId).one()進(jìn)行查詢(xún)報(bào)錯(cuò),本文主要介紹了Mybatis-plus3.4.3下使用lambdaQuery報(bào)錯(cuò)解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • IntelliJ IDEA啟動(dòng)錯(cuò)誤:插件沖突處理的解決方案

    IntelliJ IDEA啟動(dòng)錯(cuò)誤:插件沖突處理的解決方案

    在使用 IntelliJ IDEA 進(jìn)行開(kāi)發(fā)時(shí),我們可能會(huì)遇到各種啟動(dòng)錯(cuò)誤,本文將詳細(xì)介紹一種常見(jiàn)的錯(cuò)誤:插件沖突,并提供解決方案,文中通過(guò)圖文和代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2025-02-02
  • Spring 使用Validation 驗(yàn)證框架的問(wèn)題詳解

    Spring 使用Validation 驗(yàn)證框架的問(wèn)題詳解

    Spring Boot在內(nèi)部通過(guò)集成hibernate-validation已經(jīng)實(shí)現(xiàn)了JSR-349驗(yàn)證規(guī)范接口,在Spring Boot項(xiàng)目中只要直接使用就行了。 一般用在Controller中用于驗(yàn)證前端傳來(lái)的參數(shù)。這篇文章給大家介紹Spring Validation 驗(yàn)證框架的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-07-07

最新評(píng)論

综艺| 美姑县| 台州市| 白银市| 黄山市| 封丘县| 西城区| 凤城市| 龙岩市| 虎林市| 崇明县| 鞍山市| 北京市| 蒙自县| 湘潭县| 广宁县| 泰兴市| 南投市| 连江县| 大新县| 澄城县| 桓台县| 额济纳旗| 武胜县| 哈巴河县| 西峡县| 日照市| 屯留县| 贺州市| 宣恩县| 霞浦县| 合阳县| 眉山市| 通辽市| 蓝山县| 彰化县| 兴安盟| 黑河市| 仁化县| 永德县| 和静县|