企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
* 包含`ContentNegotiatingViewResolver`和`BeanNameViewResolver `bean。 * 支持提供静态资源,包括对WebJars的支持(参考27.1.5))。 * 自动注册`Converter`,`GenericConverter`和`Formatter` bean。 * 支持`HttpMessageConverters`(参考27.1.2)。 * 自动注册`MessageCodesResolver`(参考27.1.4)。 * 静态`index.html`支持。 * 自定义`Favicon`支持(参考27.1.7)。 * 自动使用`ConfigurableWebBindingInitializer` bean(参考27.1.9)。 如果你想保持 Spring Boot MVC的特点,并添加mvc的其他配置(interceptors, formatters, view controllers),添加`@Configuration`到类`WebMvcConfigurer`,不要使用`@EnableWebMvc`.,如下: ``` import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.ixinnuo.financial.framework.LoginInterceptor; /** * web相关配置 * * @author liqq * */ @Configuration public class ClientWebAppConfigurer implements WebMvcConfigurer { @Autowired LoginInterceptor loginInterceptor; /** * 注册资源,放行 */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // swagger静态资源及对应的访问路径 registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); //jar包内的静态资源 registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); // 项目的静态资源及对应的访问路径 ,默认是/**,一旦自定义拦截器就无法再使用默认的url了 registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); WebMvcConfigurer.super.addResourceHandlers(registry); } /** * 注册登录拦截器,放行登录和注册两个接口 */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/", // 首页 "/error", // 错误页 "/swagger-resources/**", "/swagger-ui.html/**", // swagger "/kaptcha/**", // 图形验证码 "/sms/**", // 短信验证码 "/user/login", // 登录 "/user/register", // 注册 "/sysOperationLog/**", // 注册 "/static/**","/webjars/**");//静态资源 WebMvcConfigurer.super.addInterceptors(registry); } /** * 添加日期类型转换器 */ @Override public void addFormatters(FormatterRegistry registry) { registry.addConverter(new StringToDateConverter()); WebMvcConfigurer.super.addFormatters(registry); } } ``` 下面是用到的日期转换类 ``` package com.ixinnuo.financial.conf; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.lang.StringUtils; import org.springframework.core.convert.converter.Converter; /** * 日期转换器,解决在post请求中日期类型参数自动转Date类型 * */ public class StringToDateConverter implements Converter<String, Date> { private static final String dateFormatFirst = "yyyy-MM-dd HH:mm:ss"; private static final String dateFormatSecond = "yyyy-MM-dd"; private static final String dateFormatThird = "yyyyMMdd"; @Override public Date convert(String source) { if (StringUtils.isBlank(source)) { return null; } source = source.trim(); SimpleDateFormat formatter; try { if(source.contains(":")){ formatter = new SimpleDateFormat(dateFormatFirst); }else if(source.contains("-")){ formatter = new SimpleDateFormat(dateFormatSecond); }else{ formatter = new SimpleDateFormat(dateFormatThird); } Date dtDate = formatter.parse(source); return dtDate; } catch (Exception e) { throw new RuntimeException(String.format("parser %s to Date fail", source)); } } } ``` 如果想提供自定义实例`RequestMappingHandlerMapping`, `RequestMappingHandlerAdapter`, 或`ExceptionHandlerExceptionResolver`,你可以声明`WebMvcRegistrationsAdapter ` 如果想完全控制mvc的配置,使用`@EnableWebMvc`和` @Configuration`一起.