Web开发的自动配置类:org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration
一、自动配置的ViewResolver
源码如下:
视图的配置mvcProperties对象中(org.springframework.boot.autoconfigure.web.WebMvcProperties.View):
spring mvc视图前后缀配置如下:
spring.mvc.view.prefix= # Spring MVC view prefix.
spring.mvc.view.suffix= # Spring MVC view suffix.
二、自动配置静态资源
1、进入规则为 /
如果进入SpringMVC的规则为/时,Spring Boot的默认静态资源的路径需要配置,如:
2、进入规则为*.xxx
不需要指定静态文件路径,将静态资源放置到webapp下的目录中即可通过地址访问
三、自定义消息转化器
自定义消息转化器,只需要在@Configuration的类中添加消息转化器的@bean加入到Spring容器,就会被Spring Boot自动加入到容器中。
@Controller
@SpringBootApplication(exclude = { RedisAutoConfiguration.class })
@Configuration
public class HelloApplication {
@Bean
public StringHttpMessageConverter stringHttpMessageConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
return converter;
}
public static void main(String[] args) {
// SpringApplication.run(HelloApplication.class, args);
SpringApplication application = new SpringApplication(HelloApplication.class);
application.setBannerMode(Mode.OFF);
application.run(args);
}
}
附加、默认配置源码:
四、自定义SpringMVC的配置
有些时候我们需要自已配置SpringMVC而不是采用默认,比如说增加一个拦截器,这个时候就得通过继承WebMvcConfigurerAdapter然后重写父类中的方法进行扩展。我们下面配置一个自定义拦截器为例:
@Configuration //申明这是一个配置
public class MySrpingMVCConfig extends WebMvcConfigurerAdapter{
// 自定义拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("自定义拦截器............");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) throws Exception {
}
};
registry.addInterceptor(handlerInterceptor).addPathPatterns("/**");
}
}
即可,再比如我们在配置一个自定义消息转换器,重写如下方法即可:
@Configuration //申明这是一个配置
public class MySrpingMVCConfig extends WebMvcConfigurerAdapter{
// 自定义消息转化器的第二种方法
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
converters.add(converter);
}
}