Skip to content

Instantly share code, notes, and snippets.

@codethereforam
Created December 20, 2018 03:01
Show Gist options
  • Save codethereforam/2dda60991d73adf3c3cd05870c1202d8 to your computer and use it in GitHub Desktop.
Save codethereforam/2dda60991d73adf3c3cd05870c1202d8 to your computer and use it in GitHub Desktop.
配置多视图解析,包括thymeleaf和Json两种视图
/**
* 配置多视图解析,包括thymeleaf和Json两种视图
* <ul>
* <li>通过url查看thymeleaf视图</li>
* <li>通过url+'.json'查看Json视图</li>
* </ul>
*
* @author yanganyu
* @date 2018/10/15 14:16
*/
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.ignoreAcceptHeader(true).defaultContentType(
MediaType.TEXT_HTML);
}
/**
* 映射静态资源路径
*
* @param registry registry
* @author yanganyu
* @date 2018/10/15 14:30
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//相当于 <mvc:resources mapping="/**" location="/static/" /> 也可设置多个路径
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
}
/**
* Configure ContentNegotiatingViewResolver
*
* @param manager manager
* @return org.springframework.web.servlet.ViewResolver
* @author yanganyu
* @date 2018/10/15 14:31
*/
@Bean
public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager) {
ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
resolver.setContentNegotiationManager(manager);
// 定义所有的视图解析器
List<ViewResolver> resolvers = new ArrayList<>();
resolvers.add(jsonViewResolver());
resolvers.add(thymeleafViewResolver());
resolver.setViewResolvers(resolvers);
return resolver;
}
/**
* Configure View resolver to provide JSON output using JACKSON library to
* convert object in JSON format.
*
* @return org.springframework.web.servlet.ViewResolver
* @author yanganyu
* @date 2018/10/15 14:33
*/
@Bean
public ViewResolver jsonViewResolver() {
return (viewName, locale) -> new MappingFastjson2JsonView();
}
/**
* 配置Thymeleaf视图解析器
*
* @return org.thymeleaf.spring5.view.ThymeleafViewResolver
* @author yanganyu
* @date 2018/10/15 14:33
*/
private ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
// 注意“order”和“viewNames”是可选的
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[]{".html"});
return viewResolver;
}
/**
* 创建模版引擎并为模板引擎注入模板解析器
*
* @return org.thymeleaf.spring5.SpringTemplateEngine
* @author yanganyu
* @date 2018/10/15 14:33
*/
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
/**
* 创建模版解析器
*
* @return org.thymeleaf.templateresolver.ITemplateResolver
* @author yanganyu
* @date 2018/10/15 14:34
*/
@Bean
public ITemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCacheable(false);
return templateResolver;
}
/**
* 配置@Repsonsebody使用fastjson
*
* @param converters converters
* @return void
* @author yanganyu
* @date 2018/10/15 16:06
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
converters.add(0, converter);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment