Spring 配置扩展

扩展MVC组件配置,我们要做的就是编写一个@Configuration注解类,并且要实现WebMvcConfiguration接口,而且不能标注@EnableWebMvc,并且一般我们把这个类放在config包下。然后就可以重写配置方法了。
那么为什么这个类不能添加@EnableWebMvc注解呢:

点开WebMvcAutoConfiguration类:


我们可以看到一个注解:@ConditionalOnMissingBean(WebMvcConfigurationSupport.class),这个注解的意思是,如果容器中没有WebMvcConfigurationSupport这个类,那么自动配置生效,如果存在,那么自动配置全部失效。
那么我们点开@EnableWebMvc注解:


发现它导入了一个类:DelegatingWebMvcConfiguration,点开这个类:


我们发现这个类继承了WebMvcConfigurationSupport,所以一旦加上@EnableWebMvc这个注解,那么容器中就存在这个类,那么WebMvcAutoConfiguration的注解@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)就会生效,就会造成MVC自动配置失效。

那么下面来看一下SpringMVC可以扩展配置一些什么:

进入SpringBoot官方文档,可以看到SpringMVC可以扩展出这些自定义模块配置:


视图解析器我们上一篇已经配置过了,那么接下来是Formatter格式化转换器

进入WebMvcAutoConfiguration类,查找Formatter


可以看到,格式化转换器有Properties,那么就是可以在yaml中配置的,在配置SpringBoot很多组件的时候,首先要看的就是容器中有没有用户自己配置的,如果有就用用户自己配置的,如果没有再用自动配置的。
这就是在yaml中自动配置的时间格式:

spring:
mvc:
format:
time: HH:mm:ss

在MVC中添加格式化组件:

@Override
public void addFormatters(FormatterRegistry registry) {
}

例如我们配置一个视图跳转,将/001页面跳转到/test页面:

package config;


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 扩展SpringMVC
*/
@Configuration
public class MvcConfig implements WebMvcConfigurer {

//视图跳转
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/001").setViewName("test");
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值