博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
精通SpringBoot——第二篇:视图解析器,静态资源和区域配置
阅读量:6521 次
发布时间:2019-06-24

本文共 2791 字,大约阅读时间需要 9 分钟。

今天让我们来看看另一个重要的类:WebMvcAutoConfigurationAdapter。先来看看它的声明:

@Configuration@Import(EnableWebMvcConfiguration.class)@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })@Order(0)public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ResourceLoaderAware {

很显然,它也是SpringBoot的一个配置类,@Improt注解是被用来整合所有在@Configuration注解中定义的bean配置。这其实很像我们将多个XML配置文件导入到单个文件的情形。@Import注解实现了相同的功能。

再往下看可以看到SpringBoot中常见的viewResolver

@Bean        @ConditionalOnMissingBean        public InternalResourceViewResolver defaultViewResolver() {            InternalResourceViewResolver resolver = new InternalResourceViewResolver();            resolver.setPrefix(this.mvcProperties.getView().getPrefix());            resolver.setSuffix(this.mvcProperties.getView().getSuffix());            return resolver;        }        @Bean        @ConditionalOnBean(View.class)        @ConditionalOnMissingBean        public BeanNameViewResolver beanNameViewResolver() {            BeanNameViewResolver resolver = new BeanNameViewResolver();            resolver.setOrder(Ordered.LOWEST_PRECEDENCE - 10);            return resolver;        }        @Bean        @ConditionalOnBean(ViewResolver.class)        @ConditionalOnMissingBean(name = "viewResolver", value = ContentNegotiatingViewResolver.class)        public ContentNegotiatingViewResolver viewResolver(BeanFactory beanFactory) {            ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();            resolver.setContentNegotiationManager(                    beanFactory.getBean(ContentNegotiationManager.class));            // ContentNegotiatingViewResolver uses all the other view resolvers to locate            // a view so it should have a high precedence            resolver.setOrder(Ordered.HIGHEST_PRECEDENCE);            return resolver;        }

接着往下看,可以看到这个是配置区域的。@ConditionalOnProperty表示如果在application.properties中配置了spring.mvc.locale属性,则该配置会生效。

@Bean        @ConditionalOnMissingBean        @ConditionalOnProperty(prefix = "spring.mvc", name = "locale")        public LocaleResolver localeResolver() {            if (this.mvcProperties                    .getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {                return new FixedLocaleResolver(this.mvcProperties.getLocale());            }            AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();            localeResolver.setDefaultLocale(this.mvcProperties.getLocale());            return localeResolver;        }

再往下看是配置静态资源(包括/webjars/**,classpath:/META-INF/resources/webjars/")和favicon(可以通过在application.properties中设置spring.mvc.favicon.enabled来启用或禁用)

好了,文章到这里就结束了,静态资源这一块并没有什么特别的地方。我们需要理解的是这几个注解的用法,还有使用了配置属性,可以允许用户对其进行自定义。还有一个值得提一下,默认的地域解析器只会处理一个地域,通过上面提到的spring.mvc.locale来配置。

转载地址:http://cmybo.baihongyu.com/

你可能感兴趣的文章
Windows Server 2008 启用公共文件夹共享
查看>>
db2建库流程
查看>>
【运维故事】职场如何领先一步?
查看>>
如何提高SEO优化团队效率
查看>>
做业务与技术之间的桥梁
查看>>
指纹识别,刚需or装逼
查看>>
混合云服务哪家强? “天翼混合云”欲挑大梁
查看>>
第十七章 Python网络编程
查看>>
DAVINCI DM365-DM368开发攻略——linux-2.6.32的移植
查看>>
[C# 网络编程系列]专题五:TCP编程
查看>>
三、索引优化(5)索引设计指南
查看>>
Configure ASM on Oracle 11.2.0.3
查看>>
PowerShell在Exchange2010下交互式创建域用户和邮箱
查看>>
谈谈Ext JS的组件——布局的使用方法续二
查看>>
SELinux管理与配置
查看>>
《统一沟通-微软-实战》-6-部署-5-边缘服务器-2012-07-12-3
查看>>
linux下环境变量配错的解决
查看>>
酷客多企业版后台开放实现BAT三平台打通
查看>>
小程序掘金潮,互联网红利争夺战——2018中国小程序商业生态峰会圆满
查看>>
Exchange日常管理之十六:通讯组与动态通讯组
查看>>