⑴ springboot框架是wen裡面的嘛
不是。根據查詢框架的相關信息得知,springboot框架不是wen裡面的。springboot不是web層框架,不是哪一層框架,不屬於任何一層,更不是mvc框架,springboot是對spring的升級,spring+自動配置,核心是對常規組件進行自動配置,即項目啟動自動對配置類進行載入,web部分只是springboot自動配置的一部分組件。
⑵ springboot web_application none
您問的是springboot web_application none的意思吧。
直接理解為springboot web_應用程序無 ,表示沒有任何應用程序。
⑶ SpringBoot WebMvcConfigurer詳解
WebMvcConfigurer配置類其實是 Spring 內部的一種配置方式,採用 JavaBean 的形式來代替傳統的 xml 配置文件形式進行針對框架個性化定製,可以自定義一些Handler,Interceptor,ViewResolver,MessageConverter。基於java-based方式的spring mvc配置,需要創建一個 配置 類並實現 WebMvcConfigurer 介面;
在Spring Boot 1.5版本都是靠重寫 WebMvcConfigurerAdapter 的方法來添加自定義攔截器,消息轉換器等。SpringBoot 2.0 後,該類被標記為@Deprecated(棄用)。官方推薦直接實現WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport,方式一實現WebMvcConfigurer介面(推薦),方式二繼承WebMvcConfigurationSupport類,具體實現可看這篇文章。 https://blog.csdn.net/fmwind/article/details/82832758
常用的方法:
以前寫SpringMVC的時候,如果需要訪問一個頁面,必須要寫Controller類,然後再寫一個方法跳轉到頁面,感覺好麻煩,其實重寫WebMvcConfigurer中的addViewControllers方法即可達到效果了
值的指出的是,在這里重寫addViewControllers方法,並不會覆蓋 WebMvcAutoConfiguration (Springboot自動配置)中的addViewControllers(在此方法中,Spring Boot將「/」映射至index.html),這也就意味著自己的配置和Spring Boot的自動配置同時有效,這也是我們推薦添加自己的MVC配置的方式。
比如,我們想自定義靜態資源映射目錄的話,只需重寫addResourceHandlers方法即可。
註:如果繼承WebMvcConfigurationSupport類實現配置時必須要重寫該方法,具體見其它文章
此時會注冊一個默認的Handler:,這個Handler也是用來處理靜態文件的,它會嘗試映射/。當DispatcherServelt映射/時(/ 和/ 是有區別的),並且沒有找到合適的Handler來處理請求時,就會交給 來處理。注意:這里的靜態資源是放置在web根目錄下,而非WEB-INF 下。
可能這里的描述有點不好懂(我自己也這么覺得),所以簡單舉個例子,例如:在webroot目錄下有一個圖片:1.png 我們知道Servelt規范中web根目錄(webroot)下的文件可以直接訪問的,但是由於DispatcherServlet配置了映射路徑是:/ ,它幾乎把所有的請求都攔截了,從而導致1.png 訪問不到,這時注冊一個 就可以解決這個問題。其實可以理解為DispatcherServlet破壞了Servlet的一個特性(根目錄下的文件可以直接訪問),是幫助回歸這個特性的。
這個方法是用來配置視圖解析器的,該方法的參數ViewResolverRegistry 是一個注冊器,用來注冊你想自定義的視圖解析器等。ViewResolverRegistry 常用的幾個方法: https://blog.csdn.net/fmwind/article/details/81235401
跨域資源共享向來都是熱門的需求,我們可以使用 CORS 來快速實現 跨域訪問,只需要在服務端進行授權即可,無需在前端添加額外的設置
簡單說,CORS是一種訪問機制,英文全稱: Cross-Origin Resource Sharing,即我們說的跨域資源共享。當一個資源從與該資源本身所在伺服器不同的域或埠請求一個資源時,資源會發起一個跨域HTTP請求。比如,在一個域名下的網頁中,調用另一個域名中的資源。
對於 CORS的跨域請求,上面的方式是重寫webMvcConfigurer實現全局配置,這里展開一下,主要有以下幾種方式可供選擇:
在任意配置類,返回一個 新的 CorsFIlter Bean ,並添加映射路徑和具體的CORS配置路徑。
參考上面,此處省略
在控制器上使用註解 @CrossOrigin :
在Controller方法上使用註解 @CrossOrigin :
使用 HttpServletResponse 對象添加響應頭(Access-Control-Allow-Origin)來授權原始域,這里 Origin的值也可以設置為 "*",表示全部放行。
⑷ spring boot啟動找不到ServletWebServerFactory bean
spring boot項目需要打包為war包,按照官網的操作:
在做了這兩個操作之後,打包成war包是沒有問題,但是本地運行spring boot項目的時候報錯了,最主要的錯誤信息是:Unable to start e to missing ServletWebServerFactory bean
按照錯誤日誌,一步步debug
具體spring boot怎麼初始化tomcat的,請搜索其他資料。我們主要用到的是這個類TomcatServletWebServerFactory
看到這邊我們就大概可以定位到問題了,就是TomcatServletWebServerFactory這個類沒有被初始化。
所以思考下我們做了什麼操作?我們將tomcat包設置了 <scope>provided</scope> ,我們本意是打包的時候才不需要將這個包加入lib裡面,正常調試編譯是可以編譯到的,那麼可不可能是編譯器的問題呢?
我們打開idea運行時的配置Run=>Edit configurations
好了,看到這里,問題就知道怎麼解決了,原先這個沒打勾,也就是運行的時候,不會將 <scope>provided</scope> 的包加入編譯,我們將這個打鉤,重新運行一下,問題就解決了。
這個參數跟idea版本有關系,在下面這個版本之後就被默認打鉤了。
⑸ SpringBoot Web項目依賴分析
在上篇中,我們得到如下的pom.xml
看看其核心類容:
按住ctrl並點擊parent中spring-boot-stater-parent節點,可以看到
spring-boot-stater-parent有一個parent spring-boot-dependencies
根據名字分析,是spring-boot項目依賴的
繼續點擊spring-boot-dependencies
可以看到其在properties中配置了大量的依賴版本
我當前這個版本(2.2.3.RELEASE)在properties中共配置了203個依賴的版本
properties下面 dependencyManagement節點中,配置了依賴組建的版本:
在項目的pom.xml中查看依賴樹:
可以看到springboot-starter-web添加了tomcat,web,webmvc,spring-core,spring-context等依賴
這也就是為什麼我們可以直接通過DemoApplication.main來運行,而不需要配置外部servlet容器的原因,同時,通過這個starter-web就已經將web相關的依賴都整合進來了。
springboot中提供了很多starter,比如
⑹ spring boot 怎麼創建web
Spring Boot充分利用了JavaConfig的配置模式以及「約定優於配置」的理念,能夠極大的簡化基於Spring
MVC的Web應用和REST服務開發。
Spring
4倡導微服務的架構,針對這一理念,近來在微博上也有一些有價值的討論,如這里和這里。微服務架構倡導將功能拆分到離散的服務中,獨立地進行部署,Spring
Boot能夠很方便地將應用打包成獨立可運行的JAR包,因此在開發模式上很契合這一理念。目前,Spring
Boot依然是0.5.0的里程碑版本,因此相關的文檔尚不完善,本文將會以一個簡單的樣例來介紹基於這個項目的開發過程。
要Spring
Boot進行功能開發,需要使用Gradle或者Maven作為構建工具。在本例中,我們會使用Eclipse和Maven插件進行開發。要使用Spring
Boot,首先創建一個Maven工程,並修改Maven主要的配置文件pom.xml,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>0.5.0.M7</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
</dependency>
</dependencies>
<properties>
<start-class>com.levin.Application</start-class>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestone</id>
⑺ 為什麼我的idea創建springboot沒有web項目如圖
正常的,你勾選的是依賴,不是目錄結構,在main目錄下新建一個就好了,注意約定的路徑不能錯.
⑻ springboot 單元測試(如何使用基於web的單元測試)
spring的測試環境是我們在開發過程中必須要掌握的,測試 有的時候需要測試 cotroller ,有的時候需要測試 service 的內容,和大家分享一下如何在工作中進行測試的,立志工具人。 一起干飯!
本章主要內容
測試是軟體開發的重要組成部分,一般情況下,測試的時候,我們只需要模擬請求數據,將數據填充至測試方法中,然後啟動spring容器,即可。
類中的內容並不多:這個類只有一個空的測試方法。即便是空的,系統還是會執行必要的檢查,確保spring應用上下文能夠成功載入。
對於控制器的測試,我們平常並不是很經常用到。它與上面的測試有所不同,沒有使用@SpringBootTest標記,而是添加了@WebMvcTest註解。這是Spring boot所提供的特殊測試註解,他會讓這個測試在Spring MVC 應用上下文中執行。更具體來講,它會將HomeControlelr 注冊到SpringMVC中,這樣的話,我們就可以向他發送請求了。
不要以為每天把功能完成了就行了,這種思想是要不得的,互勉~!
若文章對您有用,請點贊支持哦。
⑼ spring boot 發布外部tomcat 沒有web.xml怎麼部署
你這個新建的web.xml文件要創建在WEB-INF文件夾目錄下,也就是說要覆蓋掉之前這個文件的位置,然後重新編譯一下,可以去tomcat目錄下的webapps目錄里的你的項目里確認一下。