From b6ba166e723a7ec888d19059c433b487c082d8e1 Mon Sep 17 00:00:00 2001 From: gmaipady Date: Wed, 30 Dec 2015 21:17:31 +0530 Subject: [PATCH 1/2] Moved from XML config to Java config --- spring-thymeleaf/.classpath | 12 ++--- spring-thymeleaf/pom.xml | 3 ++ .../WEB-INF/appServlet/servlet-context.xml | 53 ------------------- .../src/main/webapp/WEB-INF/root-context.xml | 8 --- .../src/main/webapp/WEB-INF/web.xml | 34 ------------ 5 files changed, 9 insertions(+), 101 deletions(-) delete mode 100644 spring-thymeleaf/src/main/webapp/WEB-INF/appServlet/servlet-context.xml delete mode 100644 spring-thymeleaf/src/main/webapp/WEB-INF/root-context.xml delete mode 100644 spring-thymeleaf/src/main/webapp/WEB-INF/web.xml diff --git a/spring-thymeleaf/.classpath b/spring-thymeleaf/.classpath index 28e4a52cd4..81999ab717 100644 --- a/spring-thymeleaf/.classpath +++ b/spring-thymeleaf/.classpath @@ -11,12 +11,6 @@ - - - - - - @@ -28,5 +22,11 @@ + + + + + + diff --git a/spring-thymeleaf/pom.xml b/spring-thymeleaf/pom.xml index 1a8dff671e..ae7451a74e 100644 --- a/spring-thymeleaf/pom.xml +++ b/spring-thymeleaf/pom.xml @@ -112,6 +112,9 @@ org.apache.maven.plugins maven-war-plugin ${maven-war-plugin.version} + + false + org.apache.maven.plugins diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/appServlet/servlet-context.xml b/spring-thymeleaf/src/main/webapp/WEB-INF/appServlet/servlet-context.xml deleted file mode 100644 index ef42557429..0000000000 --- a/spring-thymeleaf/src/main/webapp/WEB-INF/appServlet/servlet-context.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/root-context.xml b/spring-thymeleaf/src/main/webapp/WEB-INF/root-context.xml deleted file mode 100644 index 5cb2a94d73..0000000000 --- a/spring-thymeleaf/src/main/webapp/WEB-INF/root-context.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/web.xml b/spring-thymeleaf/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 275a482c6f..0000000000 --- a/spring-thymeleaf/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - contextConfigLocation - /WEB-INF/root-context.xml - - - - - org.springframework.web.context.ContextLoaderListener - - - - - appServlet - org.springframework.web.servlet.DispatcherServlet - - contextConfigLocation - /WEB-INF/appServlet/servlet-context.xml - - 1 - - - - appServlet - / - - \ No newline at end of file From 02740211b07ecaadc6428ee5d9e29b8bdb14df9b Mon Sep 17 00:00:00 2001 From: gmaipady Date: Wed, 30 Dec 2015 21:21:21 +0530 Subject: [PATCH 2/2] Moved from XML config to Java config --- .../org/baeldung/thymeleaf/config/WebApp.java | 36 +++++++++ .../thymeleaf/config/WebMVCConfig.java | 73 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebApp.java create mode 100644 spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebMVCConfig.java diff --git a/spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebApp.java b/spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebApp.java new file mode 100644 index 0000000000..45752a6269 --- /dev/null +++ b/spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebApp.java @@ -0,0 +1,36 @@ +package org.baeldung.thymeleaf.config; + +import javax.servlet.ServletRegistration.Dynamic; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +/** + * Java configuration file that is used for web application initialization + */ +public class WebApp extends AbstractAnnotationConfigDispatcherServletInitializer { + + public WebApp() { + super(); + } + + @Override + protected Class[] getRootConfigClasses() { + return null; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[] { WebMVCConfig.class }; + } + + @Override + protected String[] getServletMappings() { + return new String[] { "/" }; + } + + @Override + protected void customizeRegistration(final Dynamic registration) { + super.customizeRegistration(registration); + } + +} diff --git a/spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebMVCConfig.java b/spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebMVCConfig.java new file mode 100644 index 0000000000..c5bd460eee --- /dev/null +++ b/spring-thymeleaf/src/main/java/org/baeldung/thymeleaf/config/WebMVCConfig.java @@ -0,0 +1,73 @@ +package org.baeldung.thymeleaf.config; + +import org.baeldung.thymeleaf.formatter.NameFormatter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Description; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.format.FormatterRegistry; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.thymeleaf.spring4.SpringTemplateEngine; +import org.thymeleaf.spring4.view.ThymeleafViewResolver; +import org.thymeleaf.templateresolver.ServletContextTemplateResolver; + +@Configuration +@EnableWebMvc +@ComponentScan({ "org.baeldung.thymeleaf" }) +/** + * Java configuration file that is used for Spring MVC and Thymeleaf + * configurations + */ +public class WebMVCConfig extends WebMvcConfigurerAdapter { + + @Bean + @Description("Thymeleaf Template Resolver") + public ServletContextTemplateResolver templateResolver() { + ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(); + templateResolver.setPrefix("/WEB-INF/views/"); + templateResolver.setSuffix(".html"); + templateResolver.setTemplateMode("HTML5"); + + return templateResolver; + } + + @Bean + @Description("Thymeleaf Template Engine") + public SpringTemplateEngine templateEngine() { + SpringTemplateEngine templateEngine = new SpringTemplateEngine(); + templateEngine.setTemplateResolver(templateResolver()); + + return templateEngine; + } + + @Bean + @Description("Thymeleaf View Resolver") + public ThymeleafViewResolver viewResolver() { + ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); + viewResolver.setTemplateEngine(templateEngine()); + viewResolver.setOrder(1); + return viewResolver; + } + + @Bean + @Description("Spring Message Resolver") + public ResourceBundleMessageSource messageSource() { + ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); + messageSource.setBasename("messages"); + return messageSource; + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/"); + } + + @Override + @Description("Custom Conversion Service") + public void addFormatters(FormatterRegistry registry) { + registry.addFormatter(new NameFormatter()); + } +}