1. 程式人生 > >SpringBoot學習中的坑

SpringBoot學習中的坑

springboot 版本 2.1.0 thymeleaf:版本在springboot配置檔案中已經配置,不需要進行更改

第一次使用springboot 發現瀏覽器中找不到靜態檔案,不知道什麼原因,路徑也是對的。

結構如下

在這裡插入圖片描述

以下為login的部分程式碼塊

		<link href="/asserts/css/bootstrap.min.css" th:href="@{/webjars/bootstrap/4.1.3/css/bootstrap.css}" rel="stylesheet">
		<link href="/asserts/css/signin.css" th:href="@{/asserts/css/signin.css}" rel="stylesheet">
				<form class="form-signin" action="dashboard.html" th:action="@{/user/login}" method="post">
			<img class="mb-4" src="/asserts/img/bootstrap-solid.svg" th:src="@{/asserts/img/bootstrap-solid.svg}" alt="" width="72" height="72">


MyMvcConfig程式碼如下

@Configuration
public class MyMvcConfig extends WebMvcConfigurationSupport {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        System.out.println("載入了");
        registry.addViewController("/").setViewName("login");


    }

   /* //第二種實現方法:新增WebMvcConfigurer元件
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
        WebMvcConfigurer adapter = new WebMvcConfigurer() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                 //將login.html對映到路徑urlpath為:"/"上
                 registry.addViewController("/").setViewName("login");
                registry.addViewController("/login.html").setViewName("login");
            }
         };
        return adapter;
    }*/
}

訪問後發現css和圖片全部沒有載入到,開啟控制檯發現全部是404

在這裡插入圖片描述

在這裡插入圖片描述

後來發現使用WebMvcConfigurer 就能解決這個問題,程式碼如下:

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        System.out.println("載入了");
        registry.addViewController("/").setViewName("login");


    }

    //第二種實現方法:新增WebMvcConfigurer元件
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
        WebMvcConfigurer adapter = new WebMvcConfigurer() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                 //將login.html對映到路徑urlpath為:"/"上
                 registry.addViewController("/").setViewName("login");
                registry.addViewController("/login.html").setViewName("login");
            }
         };
        return adapter;
    }



}

於是樓主找了下原因,盡然發現了WebMvcConfigurationSupport會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置~~_~~

一下是這幾種的區別: implements WebMvcConfigurer : 不會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置 @EnableWebMvc + implements WebMvcConfigurer : 會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置 extends WebMvcConfigurationSupport :會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置 extends DelegatingWebMvcConfiguration :會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置

如果用WebMvcConfigurationSupport,網上說要重寫addResourceHandlers方法,但是試了下沒用,具體可實現的解決方案,博主還沒有想到。等懂了在補充。

更改後,問題解決。