0. Подготовить
Spring boot не только обеспечивает довольно простую автоматическую настройку, но также открывает очень бесплатный и гибкий класс конфигурации. Spring MVC предоставляет нам класс WebmvcConfigurationSupport и аннотацию @EnableWebmvc, чтобы помочь нам сократить объявление компонента конфигурации. В этой статье кратко объясняется, как настроить конфигурацию Web MVC. Во-первых, вам нужно использовать @Configuration, чтобы пометить класс Webmvcconfig как класс конфигурации Spring, пример кода выглядит следующим образом:
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
//通过重写配置方法覆盖
}
И добавьте @EnableWebMvc в класс запуска, код выглядит следующим образом:
@SpringBootApplication
@MapperScan("cn.zwqh.springboot.dao")
@EnableWebMvc //启用 Spring MVC 配置
public class SpringBootSsmThymeleafApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootSsmThymeleafApplication.class, args);
}
}
1. Конфигурация статического ресурса
Конфигурация статических ресурсов по умолчанию в Spring Boot заключается в прямом сопоставлении статических файлов в каталогах /static, /public, /resources и /METAINF/resources в пути к классам или корневом каталоге ServletContext в /****. Он использует ResourceHttpRequestHandler из Spring MVC, поэтому вы можете изменить это поведение, добавив свой собственный WebMvcConfigurer и переопределив метод addResourceHandlers. Пример кода выглядит следующим образом:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/");//静态资源路径 css,js,img等
registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/templates/");//视图
registry.addResourceHandler("/mapper/**").addResourceLocations("classpath:/mapper/");//mapper.xml
super.addResourceHandlers(registry);
}
2. Конфигурация перехватчика
Добавьте перехватчик HandlerInterceptor, переопределив метод addInterceptors() и зарегистрировав класс в InterceptorRegistry. Пример кода выглядит следующим образом:
@Autowired
private BeforMethodInteceptor beforMethodInteceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册自定义拦截器,添加拦截路径和排除拦截路径
registry.addInterceptor(beforMethodInteceptor) //添加拦截器
.addPathPatterns("/**") //添加拦截路径
.excludePathPatterns(//添加排除拦截路径
"/index",
"/login",
"/doLogin",
"/logout",
"/register",
"/doRegister",
"/**/*.css",
"/**/*.png",
"/**/*.jpeg",
"/**/*.jpg",
"/**/*.ico",
"/**/*.js",
"/swagger-resources/**"
);
super.addInterceptors(registry);
}
3. Междоменная конфигурация
Реализуйте поддержку междоменной конфигурации, переопределив метод addCorsMappings, и используйте класс регистрации CorsRegistry для добавления сопоставлений путей. Пример кода выглядит следующим образом:
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")//配置允许跨域的路径
.allowedOrigins("*")//配置允许访问的跨域资源的请求域名
.allowedMethods("PUT,POST,GET,DELETE,OPTIONS")//配置允许访问该跨域资源服务器的请求方法,如:POST、GET、PUT、DELETE等
.allowedHeaders("*"); //配置允许请求header的访问,如 :X-TOKEN
super.addCorsMappings(registry);
}
4. Просмотр настроенного контроллера
Конфигурация контроллера просмотра реализована путем переопределения метода AddViewControllers для регистрации класса с помощью ViewControlLerRegistry. Пример кода выглядит следующим образом:
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("/index");//默认视图跳转
registry.addViewController("/index").setViewName("/index");
registry.addViewController("/article").setViewName("/article");
registry.addViewController("/error/404").setViewName("/error/404");
registry.addViewController("/error/500").setViewName("/error/500");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
super.addViewControllers(registry);
}
Приведенный выше код эквивалентен следующему коду:
@RequestMapping(value = { "/", "/index" })
public String index() {
return "index";
}
@RequestMapping(value = "article")
public String article() {
return "article";
}
@RequestMapping(value = "/error/404")
public String error_404() {
return "/error/404";
}
@RequestMapping(value = "/error/500")
public String error_500() {
return "/error/500";
}
5. Конфигурация конвертера сообщений
Настройте преобразователи сообщений, переопределив метод configureMessageConverters. Пример кода выглядит следующим образом: Пользовательский преобразователь строк:
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
converters.add(converter);
}
Пользовательский конвертер fastjson:
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
//1.需要定义一个convert转换消息的对象;
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//2.添加fastJson的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
//4.在convert中添加配置信息.
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
//5.将convert添加到converters当中.
converters.add(fastJsonHttpMessageConverter);
}
6. Конфигурация модуля форматирования данных
通过重写 addFormatters 方法来添加数据格式化器。 Spring MVC 接受 HTTP 请求会把参数自动绑定映射到 Controller 请求参数上。 Spring 中没有默认配置将字符串转换为日期类型。这时可以通过添加一个 DateFormatter 类来实现自动转换。 Пример кода выглядит следующим образом:
@Override
public void addFormatters(FormatterRegistry registry) {
super.addFormatters(registry);
registry.addFormatter(new DateFormatter("yyyy-MM-dd"));
}
7. Просмотр конфигурации резолвера
Настройте распознаватели представлений, переопределив метод configureViewResolvers(). Пример кода выглядит следующим образом:
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("");
viewResolver.setSuffix(".html");
viewResolver.setCache(false);
viewResolver.setContentType("text/html;charset=UTF-8");
viewResolver.setOrder(0);
registry.viewResolver(viewResolver);
super.configureViewResolvers(registry);
}
образец кода
Если не указано иное, авторские права на эту статью принадлежатутренний туманВсе, пожалуйста, указывайте источник при перепечатке.
Оригинальное название: Spring Boot 2.X (четыре): пользовательская конфигурация Web MVC Spring Boot.
Оригинальный адрес: https://www.zwqh.top/article/info/9
Если статья была вам полезна, отсканируйте код и подпишитесь на мой официальный аккаунт, статья постоянно обновляется...