7.2. Coding the Configuration

We use this configuration class to specify the locations of web resources and JSP views. The configureMessageConverters method directs that dates must be serialized to strings, overriding the default that serializes them to a numeric representation of a timestamp.

I am creating Java configuration classes here as I am not a big fan of doing configuration in XML.

  1. package ru.ibase.fbjavaex.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.ComponentScan;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  6. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  7. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  8. import org.springframework.web.servlet.view.JstlView;
  9. import org.springframework.web.servlet.view.UrlBasedViewResolver;
  10. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  11. import org.springframework.http.converter.HttpMessageConverter;
  12. import com.fasterxml.jackson.databind.ObjectMapper;
  13. import com.fasterxml.jackson.databind.SerializationFeature;
  14. import java.util.List;
  15. @Configuration
  16. @ComponentScan("ru.ibase.fbjavaex")
  17. @EnableWebMvc
  18. public class WebAppConfig extends WebMvcConfigurerAdapter {
  19. @Override
  20. public void configureMessageConverters(
  21. List<HttpMessageConverter<?>> httpMessageConverters) {
  22. MappingJackson2HttpMessageConverter jsonConverter =
  23. new MappingJackson2HttpMessageConverter();
  24. ObjectMapper objectMapper = new ObjectMapper();
  25. objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,
  26. false);
  27. jsonConverter.setObjectMapper(objectMapper);
  28. httpMessageConverters.add(jsonConverter);
  29. }
  30. @Bean
  31. public UrlBasedViewResolver setupViewResolver() {
  32. UrlBasedViewResolver resolver = new UrlBasedViewResolver();
  33. resolver.setPrefix("/WEB-INF/jsp/");
  34. resolver.setSuffix(".jsp");
  35. resolver.setViewClass(JstlView.class);
  36. return resolver;
  37. }
  38. @Override
  39. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  40. registry.addResourceHandler("/resources/**")
  41. .addResourceLocations("/WEB-INF/resources/");
  42. }
  43. }