使用Spring Boot开发WEB应用

Spring Boot适合来开发WEB应用程序,因为它提供了很多便利,如支持嵌入式HTTP服务器;提供了starter来管理依赖,快速开始,例如使用spring-boot-starter-web开始web应用程序开发,使用spring-boot-starter-webflux开始响应式web开发。

Spring Web MVC框架

在SpringMVC框架中,使用@Controller或@RestController标注请求处理器,使用@RequestMapping标志请求处理方法,例如:

@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<Customer> getUserCustomers(@PathVariable Long user) {
        // ...
    }

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

}

Spring MVC自动配置

Spring Boot的自动配置特性在开发Spring MVC WEB应用时相当方便。

默认情况下,Spring Boot自动配置提供的东东:

  • ContentNegotiatingViewResolver和BeanNameViewResolver
  • 支持静态资源
  • Converter, GenericConverter, and Formatter
  • HttpMessageConverters
  • MessageCodesResolver
  • 支持静态index.html
  • 支持自定义Favicon
  • ConfigurableWebBindingInitializer

如果上面的东东并不能满足你,你还可以:

  • 如果你想在上面自动配置的基础上,扩展其他功能,如interceptors, formatters, view controllers等,你可以通过@Configuration标注一个WebMvcConfigurer来扩展,但是注意不能标注@EnableWebMvc。
  • 如果你想在上面自动配置的基础上,实现RequestMappingHandlerMapping, RequestMappingHandlerAdapter, or ExceptionHandlerExceptionResolver,你可以通过@Configuration标注一个WebMvcRegistrationsAdapter来实现,但是注意不能标注@EnableWebMvc。
  • 如果你想要完全控制权,那你就需要@EnableWebMVC来标注前面配置类。

HttpMessageConverters

HttpMessageConverters用来转换响应消息,例如把请求处理方法返回的对象直接转换成JSON或XML。

如果你需要自定义转换器,可以这样做:

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

@Configuration(proxyBeanMethods = false)
public class MyConfiguration {

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

}  

自定义JSON序列化器和反序列化器

如果你使用Jackson来序列化和反序列JSON数据,你可能希望自定义JsonSerializer和JsonDeserializer,Spring Boot提供了一个@JsonComponent注解可以使自定义更加简单。

@JsonComponent可以直接使用在JsonSerializer、JsonDeserializer和KeyDeserializer实现类上,也可以使用在外部类上,例如:

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<SomeObject> {
        // ...
    }

    public static class Deserializer extends JsonDeserializer<SomeObject> {
        // ...
    }

}

MessageCodesResolver

MessageCodesResover用于为绑定错误生成错误码。

静态内容  

默认情况下,静态资源放在/static、/public、/resources目录下,Spring MVC使用ResoucesHttpRequestHandler来处理静态资源,你可以重写WebMvcConfigurer的addResourceHandlers来自定义ResoucesHttpRequestHandler。

默认情况下,静态资源映射到/**,你可以通过spring.mvc.static-path-pattern属性重写,示例:

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

同样可以通过spring.resources.static-locations自定义静态资源的位置,示例:

spring.resources.static-locations=/icon/  

欢迎页

默认的欢迎页是index.html,如果index.html不存在,则查找index模板文件

自定义favicon

favicon.icon文件直接放在静态资源目录下。

路径匹配和内容协商

  

猜你喜欢

转载自www.cnblogs.com/stronger-brother/p/12120781.html