springboot服務(wù)正常啟動(dòng)之后,訪問服務(wù)url無響應(yīng)問題及解決
springboot服務(wù)正常啟動(dòng)之后,訪問服務(wù)url無響應(yīng)處理
本人遇到過幾次,但是由于間隔比較長(zhǎng),所以每次都花了很多時(shí)間來查找,這個(gè)匪夷所思的問題,經(jīng)過仔細(xì)的查找分析,終于鎖定了過濾器,最終找到問題,這里記錄一下
其實(shí)原因很簡(jiǎn)單就是過濾器里沒有執(zhí)行chain.doFilter(request,response)方法,導(dǎo)致過濾鏈里的其他過濾器得不到執(zhí)行,才導(dǎo)致請(qǐng)求沒有響應(yīng)的這樣的結(jié)果的.
這就是我過濾器添加doFilter后服務(wù)可以正常訪問的圖,之前缺少,每次寫過濾器都容易忘記
springboot正常啟動(dòng),URL訪問不了后臺(tái),MARK一下注解掃描
練習(xí)項(xiàng)目的注解和代碼檢查了都沒有問題,啟動(dòng)類和配置類不在同一個(gè)目錄中,以下是項(xiàng)目目錄:
查看發(fā)現(xiàn)啟動(dòng)類注解添加掃描,就順利進(jìn)入:
@SpringBootApplication(scanBasePackages = “com”)
@SpringBootApplication注解,默認(rèn)該注解定義了Spring將自動(dòng)掃描包package com.jia.staffmanagesys及其子包下的bean。
@ComponentScan、@SpringBootApplication中的scanBasePackages屬性
@ComponentScan
創(chuàng)建一個(gè)配置類,在配置類JavaConfig形式上添加 @ComponentScan 注解。
該注解默認(rèn)會(huì)掃描該類所在的包下所有的配置類,相當(dāng)于之前的 <context:component-scan>
@ComponentScan 的作用就是根據(jù)定義的掃描路徑,把符合掃描規(guī)則的類裝配到spring容器中,注解定義如下:
@Retention(RetentionPolicy.RUNTIME) //表示只可以聲明在類上 @Target({ElementType.TYPE}) @Documented @Repeatable(ComponentScans.class) public @interface ComponentScan { @AliasFor("basePackages") String[] value() default {}; @AliasFor("value") //表示和value等價(jià) String[] basePackages() default {}; Class<?>[] basePackageClasses() default {};
@Target({ElementType.TYPE}) 表示只可以聲明在類上
value 表示用法如 @ComponentScan(value="") 也可以簡(jiǎn)寫為 @ComponentScan("") ,省略value=
basePackages,表示用法如@ComponentScan(basePackages=""),由于和value等價(jià)(@AliasFor("value")),也可簡(jiǎn)寫為@ComponentScan("")
SpringBootApplicatioscan中的scanBasePackages屬性
本質(zhì)上,SpringBootApplicatioscan中的scanBasePackages屬性底層原理正是復(fù)用了@ComponentScan,因此語法和意義基本一致
public @interface SpringBootApplication { //復(fù)用了@ComponentScan @AliasFor( annotation = ComponentScan.class, attribute = "basePackages" ) String[] scanBasePackages() default {};
@AliasFor標(biāo)簽表示別名的意義,可以理解為等價(jià)于。
因此,下面2種用法相同:
@SpringBootApplication (scanBasePackages="com.jia") public class MyClass {}
package com.jia; @ComponentScan("com.jia") @SpringBootApplication public class MyClass { }
通過上面的注解spring在啟動(dòng)的時(shí)候會(huì)按照相關(guān)的路徑進(jìn)行對(duì)@Component元素的加載。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot中@Scheduled實(shí)現(xiàn)服務(wù)啟動(dòng)時(shí)執(zhí)行一次
- idea啟動(dòng)多個(gè)SpringBoot服務(wù)實(shí)例的最優(yōu)解決方法
- springboot項(xiàng)目同時(shí)啟動(dòng)web服務(wù)和grpc服務(wù)的方法
- centos7如何通過systemctl啟動(dòng)springboot服務(wù)代替java -jar方式啟動(dòng)
- IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例
- springboot項(xiàng)目如何在linux服務(wù)器上啟動(dòng)、停止腳本
- 解決springboot服務(wù)啟動(dòng)報(bào)錯(cuò):Unable?to?start?embedded?contain
- SpringBoot應(yīng)用剛啟動(dòng)時(shí)服務(wù)報(bào)大量超時(shí)的問題及解決
相關(guān)文章
利用JavaFX工具構(gòu)建Reactive系統(tǒng)
這篇文章主要介紹了使用JavaFX構(gòu)建Reactive系統(tǒng),利用JavaFX工具集中的新的超棒特性來構(gòu)建響應(yīng)式的快速應(yīng)用程序,感興趣的小伙伴們可以參考一下2016-02-02java實(shí)現(xiàn)斐波那契數(shù)列的3種方法
這篇文章主要介紹了java實(shí)現(xiàn)斐波那契數(shù)列的3種方法,有需要的朋友可以參考一下2014-01-01Java使用默認(rèn)瀏覽器打開指定URL的方法(二種方法)
Java使用默認(rèn)瀏覽器打開指定URL。2013-10-10java網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)介紹
這篇文章主要介紹了java網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)介紹,涉及OSI分層模型和TCP/IP分層模型的對(duì)應(yīng)關(guān)系、IP地址、端口號(hào)、tcp、udp等相關(guān)內(nèi)容,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-11-11C# 中Excel導(dǎo)入時(shí)判斷是否被占用三種方法
這篇文章主要介紹了C# 中Excel導(dǎo)入時(shí) 判斷是否被占用三種方法的相關(guān)資料,需要的朋友可以參考下2017-04-04Spring?Cloud?Gateway動(dòng)態(tài)路由Apollo實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Spring?Cloud?Gateway動(dòng)態(tài)路由通過Apollo實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10