1.WebMvcConfigurationAdapter
SpringBoot 2.x 后WebMvcConfigurationAdapter 过时,2.x实现WebMvcConfigurer接口
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//将组件注册到容器
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("main.html").setViewName("dashboard");
registry.addViewController("/index.html").setViewName("login");
registry.addViewController("/atguigu").setViewName("success");
}
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandleInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/index.html","/user/login","/","/static/**","/webjars/**");
}
}
2.无法使用put传值
明明在表单中配置了put去仍然是post传递
<form action="/emp" method="post">
<input type="hidden" name="_method" value="put"/>
查看webmvc的自动配置类
{
"name": "spring.mvc.hiddenmethod.filter.enabled",
"type": "java.lang.Boolean",
"description": "Whether to enable Spring's HiddenHttpMethodFilter.",
"defaultValue": false
},
默认配置为false,即该组件是默认没有加入容器的。
于是在配置文件中将其值改为true,是其自动加入容器中
spring.mvc.hiddenmethod.filter.enabled = true
3.date格式问题
在Employee中我们存取时间是data形式,在编辑用户的信息时,通过${#dates.format(emp.birth, 'yyyy-MM-dd HH:mm')}
来修改了时间的格式到处提交时报格式错,故配置文件中修改Date默认配置
spring.mvc.date-format=yyyy-MM-dd
4.EmbeddedServletContainerCustomizer
在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类不存在,经网络查询发现被WebServerFactoryCustomizer替代
@Bean //一定要将这个定制器加入到容器中
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
return new EmbeddedServletContainerCustomizer() {
//定制嵌入式的Servlet容器相关的规则
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setPort(8083);
}
};
}
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8081);
}
};
}