springboot服務正常啟動之后,訪問服務url無響應問題及解決
springboot服務正常啟動之后,訪問服務url無響應處理
本人遇到過幾次,但是由于間隔比較長,所以每次都花了很多時間來查找,這個匪夷所思的問題,經過仔細的查找分析,終于鎖定了過濾器,最終找到問題,這里記錄一下
其實原因很簡單就是過濾器里沒有執(zhí)行chain.doFilter(request,response)方法,導致過濾鏈里的其他過濾器得不到執(zhí)行,才導致請求沒有響應的這樣的結果的.
這就是我過濾器添加doFilter后服務可以正常訪問的圖,之前缺少,每次寫過濾器都容易忘記
springboot正常啟動,URL訪問不了后臺,MARK一下注解掃描
練習項目的注解和代碼檢查了都沒有問題,啟動類和配置類不在同一個目錄中,以下是項目目錄:
查看發(fā)現(xiàn)啟動類注解添加掃描,就順利進入:
@SpringBootApplication(scanBasePackages = “com”)
@SpringBootApplication注解,默認該注解定義了Spring將自動掃描包package com.jia.staffmanagesys及其子包下的bean。
@ComponentScan、@SpringBootApplication中的scanBasePackages屬性
@ComponentScan
創(chuàng)建一個配置類,在配置類JavaConfig形式上添加 @ComponentScan 注解。
該注解默認會掃描該類所在的包下所有的配置類,相當于之前的 <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等價 String[] basePackages() default {}; Class<?>[] basePackageClasses() default {};
@Target({ElementType.TYPE}) 表示只可以聲明在類上
value 表示用法如 @ComponentScan(value="") 也可以簡寫為 @ComponentScan("") ,省略value=
basePackages,表示用法如@ComponentScan(basePackages=""),由于和value等價(@AliasFor("value")),也可簡寫為@ComponentScan("")
SpringBootApplicatioscan中的scanBasePackages屬性
本質上,SpringBootApplicatioscan中的scanBasePackages屬性底層原理正是復用了@ComponentScan,因此語法和意義基本一致
public @interface SpringBootApplication { //復用了@ComponentScan @AliasFor( annotation = ComponentScan.class, attribute = "basePackages" ) String[] scanBasePackages() default {};
@AliasFor標簽表示別名的意義,可以理解為等價于。
因此,下面2種用法相同:
@SpringBootApplication (scanBasePackages="com.jia") public class MyClass {}
package com.jia; @ComponentScan("com.jia") @SpringBootApplication public class MyClass { }
通過上面的注解spring在啟動的時候會按照相關的路徑進行對@Component元素的加載。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- SpringBoot中@Scheduled實現(xiàn)服務啟動時執(zhí)行一次
- idea啟動多個SpringBoot服務實例的最優(yōu)解決方法
- springboot項目同時啟動web服務和grpc服務的方法
- centos7如何通過systemctl啟動springboot服務代替java -jar方式啟動
- IDEA中啟動多個SpringBoot服務的實現(xiàn)示例
- springboot項目如何在linux服務器上啟動、停止腳本
- 解決springboot服務啟動報錯:Unable?to?start?embedded?contain
- SpringBoot應用剛啟動時服務報大量超時的問題及解決
相關文章
Spring?Cloud?Gateway動態(tài)路由Apollo實現(xiàn)詳解
這篇文章主要為大家介紹了Spring?Cloud?Gateway動態(tài)路由通過Apollo實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10