成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Boot 參考指南(開發(fā)Web應(yīng)用程序)

roadtogeek / 3180人閱讀

摘要:開發(fā)應(yīng)用程序非常適合應(yīng)用程序開發(fā),通過(guò)使用嵌入式或,你可以創(chuàng)建一個(gè)自包含的服務(wù)器。如果你還沒有開發(fā)過(guò)一個(gè)應(yīng)用程序,你可以按照入門部分中的示例進(jìn)行操作。自動(dòng)配置為大多數(shù)應(yīng)用程序提供了良好的自動(dòng)配置。

27. 開發(fā)Web應(yīng)用程序

Spring Boot非常適合web應(yīng)用程序開發(fā),通過(guò)使用嵌入式Tomcat、Jetty、Undertow或Netty,你可以創(chuàng)建一個(gè)自包含的HTTP服務(wù)器。大多數(shù)web應(yīng)用程序都使用spring-boot-starter-web模塊來(lái)快速啟動(dòng)和運(yùn)行,你還可以選擇使用spring-boot-starter-webflux模塊構(gòu)建reactive web應(yīng)用程序。

如果你還沒有開發(fā)過(guò)一個(gè)Spring Boot web應(yīng)用程序,你可以按照入門部分中的“Hello World!”示例進(jìn)行操作。

27.1 Spring Web MVC Framework

Spring Web MVC框架(通常簡(jiǎn)稱為“Spring MVC”)是一個(gè)豐富的“模型視圖控制器”Web框架,Spring MVC允許你創(chuàng)建特殊的@Controller@RestController bean來(lái)處理傳入的HTTP請(qǐng)求,控制器中的方法通過(guò)使用@RequestMapping注解映射到HTTP。

下面的代碼顯示了一個(gè)典型的提供JSON數(shù)據(jù)的@RestController

@RestController
@RequestMapping(value="/users")
public class MyRestController {

    @RequestMapping(value="/{user}", method=RequestMethod.GET)
    public User getUser(@PathVariable Long user) {
        // ...
    }

    @RequestMapping(value="/{user}/customers", method=RequestMethod.GET)
    List getUserCustomers(@PathVariable Long user) {
        // ...
    }

    @RequestMapping(value="/{user}", method=RequestMethod.DELETE)
    public User deleteUser(@PathVariable Long user) {
        // ...
    }

}

Spring MVC是核心Spring框架的一部分,在參考文檔中可以找到詳細(xì)信息,在spring.io/guides還提供了幾個(gè)介紹Spring MVC的指南。

27.1.1 Spring MVC自動(dòng)配置

Spring Boot為大多數(shù)應(yīng)用程序提供了良好的Spring MVC自動(dòng)配置。

自動(dòng)配置在Spring的默認(rèn)設(shè)置之上添加了以下特性:

包含ContentNegotiatingViewResolverBeanNameViewResolver bean。

支持提供靜態(tài)資源,包括支持WebJars(稍后將在本文中介紹)。

Converter、GenericConverterFormatter bean的自動(dòng)注冊(cè)。

支持HttpMessageConverters(稍后將在本文中介紹)。

MessageCodesResolver的自動(dòng)注冊(cè)(稍后將在本文中介紹)。

靜態(tài)index.html支持。

支持自定義圖標(biāo)(稍后將在本文中介紹)。

自動(dòng)使用ConfigurableWebBindingInitializer bean(稍后將在本文中介紹)。

如果你想保留Spring Boot MVC特性,并且希望添加額外的MVC配置(攔截器、格式化器、視圖控制器和其他特性),你可以添加自己的@Configuration類的WebMvcConfigurer類型,但沒有@EnableWebMvc,如果希望提供RequestMappingHandlerMappingRequestMappingHandlerAdapterExceptionHandlerExceptionResolver的定制實(shí)例,可以聲明一個(gè)WebMvcRegistrationsAdapter實(shí)例來(lái)提供這些組件。

如果你想完全控制Spring MVC,可以添加自己的@EnableWebMvc注解的@Configuration。

27.1.2 HttpMessageConverters

Spring MVC使用HttpMessageConverter接口轉(zhuǎn)換HTTP請(qǐng)求和響應(yīng),合理的默認(rèn)值是開箱即用的,例如,對(duì)象可以自動(dòng)轉(zhuǎn)換為JSON(通過(guò)使用Jackson庫(kù))或XML(如果可用,可以使用Jackson XML擴(kuò)展,或者如果Jackson XML擴(kuò)展不可用,可以使用JAXB),默認(rèn)情況下,字符串是用UTF-8編碼的。

如果需要添加或定制轉(zhuǎn)換器,可以使用Spring Boot的HttpMessageConverters類,如下面的清單所示:

import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.*;
import org.springframework.http.converter.*;

@Configuration
public class MyConfiguration {

    @Bean
    public HttpMessageConverters customConverters() {
        HttpMessageConverter additional = ...
        HttpMessageConverter another = ...
        return new HttpMessageConverters(additional, another);
    }

}

上下文中出現(xiàn)的任何HttpMessageConverter bean都被添加到轉(zhuǎn)換器列表中,你還可以以同樣的方式覆蓋默認(rèn)轉(zhuǎn)換器。

27.1.3 自定義JSON序列化器和反序列化器

如果使用Jackson序列化和反序列化JSON數(shù)據(jù),你可能想要編寫自己的JsonSerializerJsonDeserializer類,定制序列化器通常通過(guò)模塊向Jackson注冊(cè),但是Spring Boot提供了一個(gè)替代的@JsonComponent注解,使直接注冊(cè)Spring bean變得更容易。

你可以直接在JsonSerializerJsonDeserializer實(shí)現(xiàn)上使用@JsonComponent注解,你還可以在包含序列化/反序列化器的類中使用它作為內(nèi)部類,如下例所示:

import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import org.springframework.boot.jackson.*;

@JsonComponent
public class Example {

    public static class Serializer extends JsonSerializer {
        // ...
    }

    public static class Deserializer extends JsonDeserializer {
        // ...
    }

}

ApplicationContext中的所有@JsonComponent bean都自動(dòng)注冊(cè)到Jackson,因?yàn)?b>@JsonComponent是由@Component注解的,所以通常使用組件掃描規(guī)則。

Spring Boot還提供了JsonObjectSerializer和JsonObjectDeserializer基類,這些基類在序列化對(duì)象時(shí)為標(biāo)準(zhǔn)Jackson版本提供了有用的替代方法,有關(guān)詳細(xì)信息,請(qǐng)參閱Javadoc中的JsonObjectSerializer和JsonObjectDeserializer。

27.1.4 MessageCodesResolver

Spring MVC有一個(gè)生成錯(cuò)誤代碼的策略,用于從綁定錯(cuò)誤中呈現(xiàn)錯(cuò)誤消息:MessageCodesResolver,如果你設(shè)置spring.mvc.message-codes-resolver.format屬性PREFIX_ERROR_CODEPOSTFIX_ERROR_CODE,Spring Boot為你創(chuàng)建一個(gè)(參見DefaultMessageCodesResolver.Format中的枚舉)。

27.1.5 靜態(tài)內(nèi)容

默認(rèn)情況下,Spring Boot從類路徑或ServletContext根目錄中提供靜態(tài)內(nèi)容,目錄名為/static(或/public/resources/META-INF/resources),它使用來(lái)自Spring MVC的ResourceHttpRequestHandler,這樣你就可以通過(guò)添加自己的WebMvcConfigurer并覆蓋addResourceHandlers方法來(lái)修改這種行為。

在獨(dú)立的web應(yīng)用程序中,還啟用了容器中的默認(rèn)servlet并充當(dāng)后備,如果Spring決定不處理它,則從ServletContext的根服務(wù)提供內(nèi)容,大多數(shù)情況下,這不會(huì)發(fā)生(除非你修改默認(rèn)的MVC配置),因?yàn)镾pring總是可以通過(guò)DispatcherServlet處理請(qǐng)求。

默認(rèn)情況下,資源被映射到/**上,但是你可以使用spring.mvc.static-path-pattern屬性對(duì)其進(jìn)行調(diào)優(yōu),例如,將所有資源重新分配到/resources/**可以實(shí)現(xiàn)如下操作:

spring.mvc.static-path-pattern=/resources/**

還可以使用spring.resources.static-locations屬性定制靜態(tài)資源位置(用目錄位置列表替換默認(rèn)值),根Servlet上下文路徑"/"也作為位置自動(dòng)添加。

除了前面提到的“標(biāo)準(zhǔn)”靜態(tài)資源位置之外,Webjars內(nèi)容還有一個(gè)特殊的例子,任何在/webjars/**中具有路徑的資源都可以從jar文件中獲取,如果它們被打包成webjars格式的話。

如果你的應(yīng)用程序打包為jar,那么不要使用src/main/webapp目錄,雖然這個(gè)目錄是一個(gè)通用標(biāo)準(zhǔn),但它只與war打包一起工作,并且如果你生成一個(gè)jar,它會(huì)被大多數(shù)構(gòu)建工具默默忽略。

Spring Boot還支持Spring MVC提供的高級(jí)資源處理特性,允許用例(比如cache-busting的靜態(tài)資源)或使用webjar的版本無(wú)關(guān)url。

要為webjar使用版本無(wú)關(guān)的url,請(qǐng)?zhí)砑?b>webjar-locator-core依賴項(xiàng),然后聲明你的Webjar,以jQuery為例,添加"/webjars/jquery/jquery.min.js"的結(jié)果是"/webjars/jquery/x.y.z/jquery.min.js",x.y.z的地方是Webjar版本。

如果使用JBoss,則需要聲明webjar—locator—JBoss—vfs依賴項(xiàng),而不是webjar—locator-core,否則,所有Webjars解析為404。

為了使用cache busting,下面的配置為所有靜態(tài)資源配置cache busting解決方案,有效地添加了內(nèi)容散列,例如,在URL中:

spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
由于ResourceUrlEncodingFilter自動(dòng)為Thymeleaf和FreeMarker配置,所以到資源的鏈接在運(yùn)行時(shí)在模板中被重寫,在使用JSP時(shí),應(yīng)該手動(dòng)聲明這個(gè)過(guò)濾器,其他的模板引擎目前不被自動(dòng)支持,但是可以使用自定義模板宏/助手和ResourceUrlProvider的使用。

當(dāng)使用JavaScript模塊加載器動(dòng)態(tài)加載資源時(shí),不允許重命名文件,這就是為什么其他策略也得到支持并可以結(jié)合使用,“固定”策略在URL中添加靜態(tài)版本字符串,而不更改文件名,如下例所示:

spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
spring.resources.chain.strategy.fixed.enabled=true
spring.resources.chain.strategy.fixed.paths=/js/lib/
spring.resources.chain.strategy.fixed.version=v12

在這種配置下,位于"/js/lib/"下的JavaScript模塊使用固定的版本控制策略(“/v12/js/lib/mymodule.js”),而其他資源仍然使用內(nèi)容控制策略()。

有關(guān)更多支持的選項(xiàng),請(qǐng)參閱ResourceProperties。

這個(gè)特性已經(jīng)在一個(gè)專門的博客帖子和Spring Framework參考文檔中進(jìn)行了詳細(xì)描述。
27.1.6 歡迎頁(yè)面

Spring Boot支持靜態(tài)和模板歡迎頁(yè)面,它首先查找index.html文件中的配置靜態(tài)內(nèi)容位置,如果其中一個(gè)沒有找到,則查找index模板,如果找到任何一個(gè),它將自動(dòng)用作應(yīng)用程序的歡迎頁(yè)面。

27.1.7 自定義圖標(biāo)

Spring Boot在配置的靜態(tài)內(nèi)容位置和類路徑根目錄中查找favicon.ico(按順序),如果存在這樣的文件,它將自動(dòng)用作應(yīng)用程序的圖標(biāo)。

27.1.8 路徑匹配和內(nèi)容協(xié)商

Spring MVC可以通過(guò)查看請(qǐng)求路徑并將其與應(yīng)用程序中定義的映射匹配(例如,控制器方法上的@GetMapping注解),將傳入的HTTP請(qǐng)求映射到處理程序。

上一篇:日志記錄 下一篇:安全

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77373.html

相關(guān)文章

  • Spring Boot 參考指南(目錄)

    摘要:參考指南使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的生產(chǎn)級(jí)的基于的應(yīng)用程序,我們對(duì)平臺(tái)和第三方庫(kù)有自己的看法,這樣你就可以以最低限度工作開始了,大多數(shù)應(yīng)用程序都需要很少的配置。文檔本節(jié)簡(jiǎn)要概述了參考文檔,它充當(dāng)文檔其余部分的映射。 Spring Boot 參考指南 Spring Boot使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的、生產(chǎn)級(jí)的基于Spring的應(yīng)用程序,我們對(duì)Spring平臺(tái)和第三方庫(kù)有自己的看...

    awesome23 評(píng)論0 收藏0
  • Spring Boot 參考指南開發(fā)你的第一個(gè)Spring Boot應(yīng)用程序

    摘要:開發(fā)你的第一個(gè)應(yīng)用程序本節(jié)描述如何開發(fā)一個(gè)簡(jiǎn)單的應(yīng)用程序來(lái)突出了的一些關(guān)鍵特性,我們使用來(lái)構(gòu)建這個(gè)項(xiàng)目,因?yàn)榇蠖鄶?shù)都支持它。如果你希望分發(fā)一個(gè)自包含的應(yīng)用程序,這可能會(huì)有問題。 11. 開發(fā)你的第一個(gè)Spring Boot應(yīng)用程序 本節(jié)描述如何開發(fā)一個(gè)簡(jiǎn)單的Hello World! web應(yīng)用程序來(lái)突出了Spring Boot的一些關(guān)鍵特性,我們使用Maven來(lái)構(gòu)建這個(gè)項(xiàng)目,因?yàn)榇蠖鄶?shù)...

    Cristalven 評(píng)論0 收藏0
  • Spring Boot 參考指南(安裝 Spring Boot

    摘要:安裝可以與經(jīng)典開發(fā)工具一起使用,也可以作為命令行工具安裝。下面的示例展示了一個(gè)典型的文件安裝命令行接口是一個(gè)命令行工具,你可以使用它來(lái)快速地實(shí)現(xiàn)的原型。 10. 安裝Spring Boot Spring Boot可以與經(jīng)典Java開發(fā)工具一起使用,也可以作為命令行工具安裝。無(wú)論哪種方式,都需要Java SDK v1.8或更高版本。在開始之前,你應(yīng)該使用以下命令檢查當(dāng)前的Java安裝: ...

    Donald 評(píng)論0 收藏0
  • Spring Boot 參考指南Spring Boot文檔)

    摘要:關(guān)于文檔參考指南可用如下方式最新的副本可以在中找到。嘗試操作文檔,它們?yōu)樽畛R姷膯栴}提供解決方案。學(xué)習(xí)基礎(chǔ),構(gòu)建在許多其他項(xiàng)目上,網(wǎng)站提供豐富的參考文檔,如果你要從開始,嘗試其中一個(gè)指南。我們對(duì)進(jìn)行監(jiān)視,以解決帶有標(biāo)記的問題。 1. 關(guān)于文檔 Spring Boot 參考指南可用如下方式: HTML PDF EPUB 最新的副本可以在 docs.spring.io/spring-b...

    zhjx922 評(píng)論0 收藏0
  • Spring Boot 參考指南(安全)

    摘要:用于發(fā)布身份驗(yàn)證事件的。導(dǎo)入用于安全,配置身份驗(yàn)證,這在非應(yīng)用程序中也是相關(guān)的。安全出于安全考慮,除和之外的所有默認(rèn)禁用,屬性可用于啟用。有關(guān)保護(hù)的其他信息可以在參考指南中找到。 28. 安全 如果在類路徑上有Spring Security,那么web應(yīng)用程序默認(rèn)是安全的,Spring Boot依賴Spring Security的內(nèi)容協(xié)商策略來(lái)決定是使用httpBasic還是formL...

    XanaHopper 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<