JavaWeb——SpringBoot 系列(4)SpringBoot 的Web相关配置
其他
2020-02-08 18:24:00
阅读次数: 0
一、自动配置
- 正如前面所说,SpringBoot 提倡少配置或零配置,而要做到这样,也就意味着 Spring Boot 这个框架得为开发者事先配置好必须得配置,从而才能有自动配置得功能。Spring Boot 提供了这几个方面得自动配置:ViewResolver自动配置、静态资源自动配置、Formatter自动配置、Converter自动配置、HttpMessageConverters自动配置和静态首页配置。
1、ViewResolver 的自动配置
1.1、ContentNegotiatingViewResolver
- 这是 Spring MVC 提供的一个特殊的 ViewResolver,用于代理不同的 ViewResolver 来处理不同的 View 来渲染视图,拥有最高的优先级。
1.2、BeanNameViewResolver
- 先看个例子:
@Bean
public BeanBameViewResolver beanNameViewResolver(){
BeanNameViewResolver resolver = new BeanNameViewResolver();
return resolver;
}
@Bean
public MappingJackson2JsonView jsonView(){
MappingJackson2JsonView jsonView = new MappingJackson2JsonView();
return hsonView;
}
@RequestMapping(value="/json",produces={MediaType.APPLICATION_JSON_VALUE})
public String json(Model model){
Person single = new Person("test",11);
model.addAttribute("demo",single);
return "jsonView";
}
- 也就是说,在控制器(@Controller)中的方法返回的视图名会根据 BeanNameViewResolver 去查找 Bean 的名称和视图名一样的来渲染视图。
1.3、InternetResourceViewResolver
- 该 ViewResolver 主要通过设置前缀、后缀,以及控制器中的方法来返回视图名的字符串,从而得到实际页面。
- 以上 Resolver 方法都在 WebMvcAutoConfiguration 源文件中,位于org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration
2、静态资源的自动配置
3、Formatter 和 Converter
- 它们的源代码如下:
public void addFormatters(FormatterRegistry registry) {
Iterator var2 = this.getBeansOfType(Converter.class).iterator();
while(var2.hasNext()) {
Converter<?, ?> converter = (Converter)var2.next();
registry.addConverter(converter);
}
var2 = this.getBeansOfType(GenericConverter.class).iterator();
while(var2.hasNext()) {
GenericConverter converter = (GenericConverter)var2.next();
registry.addConverter(converter);
}
var2 = this.getBeansOfType(Formatter.class).iterator();
while(var2.hasNext()) {
Formatter<?> formatter = (Formatter)var2.next();
registry.addFormatter(formatter);
}
}
private <T> Collection<T> getBeansOfType(Class<T> type) {
return this.beanFactory.getBeansOfType(type).values();
}
- 由上可以看出,只要我们定义了 Converter、GenericConverter 和 Formatter 接口的实现类的 Bean,便会被自动注册到 Spring MVC 中。
4、messageConverters
- 同样的先看源码:
@Autowired
private HttpMessageConverters messageConverters;
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.addAll(this.messageConverters.getConverters());
}
- 通过 @Autowired 自动扫描所有的 HttpMessageConverter 然后自动加入到 HttpMessageConverter list 中。
- 一旦需要新增自定义 HttpMessageConverter,只需要定义一个 HttpMessageConverters 的 Bean并在 Bean 里面注册自定义的 HttpMessageConverter 即可,例如:
@Bean
public HttpMessagesConverters testConverters(){
HttpMessageConverter<?> test = new TestCustomConverter();
return new HttpMessageConverters(test);
}
5、首页的配置
二、手动配置
上一篇
下一篇
发布了146 篇原创文章 ·
获赞 15 ·
访问量 1万+
转载自blog.csdn.net/qq_42896653/article/details/104165514