diff --git a/spring-boot-mvc/README.md b/spring-boot-mvc/README.md
index a22a6df667..b46dbe3bae 100644
--- a/spring-boot-mvc/README.md
+++ b/spring-boot-mvc/README.md
@@ -2,3 +2,9 @@
- [Guide to the Favicon in Spring Boot](http://www.baeldung.com/spring-boot-favicon)
- [Custom Validation MessageSource in Spring Boot](https://www.baeldung.com/spring-custom-validation-message-source)
+- [Spring Boot Annotations](http://www.baeldung.com/spring-boot-annotations)
+- [Spring Scheduling Annotations](http://www.baeldung.com/spring-scheduling-annotations)
+- [Spring Web Annotations](http://www.baeldung.com/spring-mvc-annotations)
+- [Spring Core Annotations](http://www.baeldung.com/spring-core-annotations)
+- [Display RSS Feed with Spring MVC](http://www.baeldung.com/spring-mvc-rss-feed)
+
diff --git a/spring-boot-mvc/pom.xml b/spring-boot-mvc/pom.xml
index d0fce26bb5..e456155f36 100644
--- a/spring-boot-mvc/pom.xml
+++ b/spring-boot-mvc/pom.xml
@@ -32,6 +32,13 @@
org.springframework.boot
spring-boot-starter-validation
+
+
+
+ com.rometools
+ rome
+ ${rome.version}
+
@@ -47,6 +54,8 @@
UTF-8
UTF-8
1.8
+
+ 1.10.0
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/Bike.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/Bike.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/Bike.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/Bike.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/Biker.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/Biker.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/Biker.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/Biker.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/Car.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/Car.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/Car.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/Car.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/CarMechanic.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/CarMechanic.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/CarMechanic.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/CarMechanic.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/CarUtility.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/CarUtility.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/CarUtility.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/CarUtility.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/CustomException.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomException.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/CustomException.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomException.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/CustomResponseController.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseController.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/CustomResponseController.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseController.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/CustomResponseWithBuilderController.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseWithBuilderController.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/CustomResponseWithBuilderController.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseWithBuilderController.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/Driver.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/Driver.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/Driver.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/Driver.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/Engine.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/Engine.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/Engine.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/Engine.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/Vehicle.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/Vehicle.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/Vehicle.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/Vehicle.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleController.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleController.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleController.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleController.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleFactoryApplication.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleFactoryApplication.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleFactoryApplication.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleFactoryApplication.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleFactoryConfig.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleFactoryConfig.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleFactoryConfig.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleFactoryConfig.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleRepository.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleRepository.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleRepository.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleRepository.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleRestController.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleRestController.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleRestController.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleRestController.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleService.java b/spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleService.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/annotations/VehicleService.java
rename to spring-boot-mvc/src/main/java/com/baeldung/annotations/VehicleService.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/rss/RssFeedApplication.java b/spring-boot-mvc/src/main/java/com/baeldung/rss/RssFeedApplication.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/rss/RssFeedApplication.java
rename to spring-boot-mvc/src/main/java/com/baeldung/rss/RssFeedApplication.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/rss/RssFeedController.java b/spring-boot-mvc/src/main/java/com/baeldung/rss/RssFeedController.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/rss/RssFeedController.java
rename to spring-boot-mvc/src/main/java/com/baeldung/rss/RssFeedController.java
diff --git a/spring-mvc-java/src/main/java/com/baeldung/rss/RssFeedView.java b/spring-boot-mvc/src/main/java/com/baeldung/rss/RssFeedView.java
similarity index 100%
rename from spring-mvc-java/src/main/java/com/baeldung/rss/RssFeedView.java
rename to spring-boot-mvc/src/main/java/com/baeldung/rss/RssFeedView.java
diff --git a/spring-mvc-java/src/test/java/com/baeldung/rss/RssFeedUnitTest.java b/spring-boot-mvc/src/test/java/com/baeldung/rss/RssFeedUnitTest.java
similarity index 100%
rename from spring-mvc-java/src/test/java/com/baeldung/rss/RssFeedUnitTest.java
rename to spring-boot-mvc/src/test/java/com/baeldung/rss/RssFeedUnitTest.java
diff --git a/spring-mvc-java/README.md b/spring-mvc-java/README.md
index c4a0e3579c..44b1d65bc8 100644
--- a/spring-mvc-java/README.md
+++ b/spring-mvc-java/README.md
@@ -28,10 +28,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [The Spring @Controller and @RestController Annotations](http://www.baeldung.com/spring-controller-vs-restcontroller)
- [Spring MVC @PathVariable with a dot (.) gets truncated](http://www.baeldung.com/spring-mvc-pathvariable-dot)
- [A Quick Example of Spring Websockets’ @SendToUser Annotation](http://www.baeldung.com/spring-websockets-sendtouser)
-- [Spring Boot Annotations](http://www.baeldung.com/spring-boot-annotations)
-- [Spring Scheduling Annotations](http://www.baeldung.com/spring-scheduling-annotations)
-- [Spring Web Annotations](http://www.baeldung.com/spring-mvc-annotations)
-- [Spring Core Annotations](http://www.baeldung.com/spring-core-annotations)
- [Using Spring ResponseEntity to Manipulate the HTTP Response](http://www.baeldung.com/spring-response-entity)
- [Using Spring @ResponseStatus to Set HTTP Status Code](http://www.baeldung.com/spring-response-status)
-- [Display RSS Feed with Spring MVC](http://www.baeldung.com/spring-mvc-rss-feed)
diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml
index 83f2556fe0..9d3e0ca1b2 100644
--- a/spring-mvc-java/pom.xml
+++ b/spring-mvc-java/pom.xml
@@ -5,70 +5,54 @@
spring-mvc-java
0.1-SNAPSHOT
spring-mvc-java
+ war
- parent-boot-2
+ parent-spring-5
com.baeldung
0.0.1-SNAPSHOT
- ../parent-boot-2
+ ../parent-spring-5
-
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-devtools
-
-
- org.springframework.boot
- spring-boot-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-aop
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-websocket
-
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
-
-
-
javax.servlet
javax.servlet-api
+ 4.0.1
+
+
+ javax.servlet.jsp
+ javax.servlet.jsp-api
+ 2.3.3
javax.servlet
jstl
+ ${jstl.version}
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson-databind.version}
org.aspectj
aspectjrt
+ 1.9.1
org.aspectj
aspectjweaver
+ 1.9.1
@@ -80,6 +64,7 @@
net.sourceforge.htmlunit
htmlunit
+ 2.32
commons-logging
@@ -104,10 +89,12 @@
com.jayway.jsonpath
json-path
test
+ 2.4.0
org.springframework
spring-test
+ ${spring.version}
test
@@ -120,34 +107,29 @@
- org.hibernate
+ org.hibernate.validator
hibernate-validator
${hibernate-validator.version}
-
- javax.el
- javax.el-api
- ${javax.el.version}
-
-
- org.glassfish.web
- javax.el
- ${javax.el.version}
-
com.google.code.gson
gson
+ 2.8.5
-
-
-
- com.rometools
- rome
- ${rome.version}
-
+
+ org.springframework
+ spring-websocket
+ ${spring.version}
+
+
+
+ org.springframework
+ spring-messaging
+ ${spring.version}
+
@@ -169,6 +151,7 @@
org.apache.maven.plugins
maven-war-plugin
+ ${maven-war-plugin.version}
false
@@ -262,7 +245,7 @@
3.0.9.RELEASE
- 5.2.5.Final
+ 6.0.10.Final
5.1.40
@@ -281,24 +264,19 @@
2.23
- 2.6
+ 3.2.2
2.7
1.6.1
3.1.0
- 1.8.9
+ 1.9.1
3.16-beta1
-
- 1.10.0
-
- 2.2.4
+ 3.0.1-b06
-
- com.baeldung.app.Application
diff --git a/spring-mvc-java/src/main/java/com/baeldung/app/Application.java b/spring-mvc-java/src/main/java/com/baeldung/app/Application.java
deleted file mode 100644
index 68d078de78..0000000000
--- a/spring-mvc-java/src/main/java/com/baeldung/app/Application.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.baeldung.app;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-import org.springframework.context.annotation.ComponentScan;
-
-@EnableAutoConfiguration
-@ComponentScan(value = {"com.baeldung.web.controller"}, resourcePattern = "**/FileUploadController.class")
-@SpringBootApplication
-public class Application extends SpringBootServletInitializer {
-
- public static void main(final String[] args) {
- SpringApplication.run(Application.class, args);
- }
-}
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java b/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java
index 9cf6e384f1..eec12f466f 100644
--- a/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java
+++ b/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java
@@ -14,13 +14,20 @@ public class AppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
- context.setConfigLocation("org.baeldung.config");
+
+ context.scan("com.baeldung");
container.addListener(new ContextLoaderListener(context));
- ServletRegistration.Dynamic dispatcher = container.addServlet("java-servlet", new DispatcherServlet(context));
+ ServletRegistration.Dynamic dispatcher = container.addServlet("mvc", new DispatcherServlet(context));
dispatcher.setLoadOnStartup(1);
- dispatcher.addMapping("/java-servlet/*");
+ dispatcher.addMapping("/");
+
+ // final MultipartConfigElement multipartConfigElement = new
+ // MultipartConfigElement(TMP_FOLDER, MAX_UPLOAD_SIZE,
+ // MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2);
+ //
+ // appServlet.setMultipartConfig(multipartConfigElement);
}
}
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ApplicationConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ApplicationConfig.java
deleted file mode 100644
index 261d5793dc..0000000000
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ApplicationConfig.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.baeldung.spring.web.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.ViewResolver;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-
-@EnableWebMvc
-@Configuration
-@ComponentScan(basePackages = { "com.baeldung.web.controller" })
-public class ApplicationConfig extends WebMvcConfigurerAdapter {
-
- public ApplicationConfig() {
- super();
- }
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("index");
- }
-
- @Bean
- public ViewResolver viewResolver() {
- final InternalResourceViewResolver bean = new InternalResourceViewResolver();
- bean.setViewClass(JstlView.class);
- bean.setPrefix("/WEB-INF/jsp/");
- bean.setSuffix(".jsp");
- return bean;
- }
-}
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ClientWebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ClientWebConfig.java
deleted file mode 100644
index de47f9f69e..0000000000
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ClientWebConfig.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.baeldung.spring.web.config;
-
-import javax.servlet.ServletContext;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Description;
-import org.springframework.context.support.ResourceBundleMessageSource;
-import org.springframework.web.servlet.ViewResolver;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-import org.thymeleaf.spring4.SpringTemplateEngine;
-import org.thymeleaf.spring4.view.ThymeleafViewResolver;
-import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
-
-@EnableWebMvc
-@Configuration
-public class ClientWebConfig implements WebMvcConfigurer {
-
- public ClientWebConfig() {
- super();
- }
-
- // API
-
- @Autowired
- private ServletContext ctx;
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
-
- registry.addViewController("/sample.html");
- }
-
- @Bean
- public ViewResolver thymeleafViewResolver() {
- final ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
- viewResolver.setTemplateEngine(templateEngine());
- viewResolver.setOrder(1);
- return viewResolver;
- }
-
- @Bean
- public ViewResolver viewResolver() {
- final InternalResourceViewResolver bean = new InternalResourceViewResolver();
- bean.setViewClass(JstlView.class);
- bean.setPrefix("/WEB-INF/view/");
- bean.setSuffix(".jsp");
- bean.setOrder(0);
- return bean;
- }
-
- @Bean
- @Description("Thymeleaf template resolver serving HTML 5")
- public ServletContextTemplateResolver templateResolver() {
- final ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(ctx);
- templateResolver.setPrefix("/WEB-INF/templates/");
- templateResolver.setSuffix(".html");
- templateResolver.setTemplateMode("HTML5");
- return templateResolver;
- }
-
- @Bean
- @Description("Thymeleaf template engine with Spring integration")
- public SpringTemplateEngine templateEngine() {
- final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
- templateEngine.setTemplateResolver(templateResolver());
- return templateEngine;
- }
-
- @Bean
- @Description("Spring message resolver")
- public MessageSource messageSource() {
- final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
- messageSource.setBasename("messages");
- return messageSource;
- }
-
- @Override
- public void addResourceHandlers(final ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
- }
-
-}
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ContentManagementWebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ContentManagementWebConfig.java
deleted file mode 100644
index 498105ded1..0000000000
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ContentManagementWebConfig.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.baeldung.spring.web.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.MediaType;
-import org.springframework.web.servlet.ViewResolver;
-import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-
-@EnableWebMvc
-@Configuration
-public class ContentManagementWebConfig extends WebMvcConfigurerAdapter {
-
- public ContentManagementWebConfig() {
- super();
- }
-
- // API
-
- @Override
- public void configureContentNegotiation(final ContentNegotiationConfigurer configurer) {
- configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true).useJaf(false).defaultContentType(MediaType.APPLICATION_JSON).mediaType("xml", MediaType.APPLICATION_XML).mediaType("json",
- MediaType.APPLICATION_JSON);
- }
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/sample.html");
- }
-
- @Bean
- public ViewResolver viewResolver() {
- final InternalResourceViewResolver bean = new InternalResourceViewResolver();
- bean.setViewClass(JstlView.class);
- bean.setPrefix("/WEB-INF/view/");
- bean.setSuffix(".jsp");
- bean.setOrder(0);
- return bean;
- }
-
-}
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java
deleted file mode 100644
index 80ce22edd6..0000000000
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.baeldung.spring.web.config;
-
-import org.springframework.web.WebApplicationInitializer;
-import org.springframework.web.context.ContextLoaderListener;
-import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
-import org.springframework.web.context.support.GenericWebApplicationContext;
-import org.springframework.web.servlet.DispatcherServlet;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import java.util.Set;
-
-public class MainWebAppInitializer implements WebApplicationInitializer {
-
- private static final String TMP_FOLDER = "/tmp";
- private static final int MAX_UPLOAD_SIZE = 5 * 1024 * 1024; // 5 MB
-
- /**
- * Register and configure all Servlet container components necessary to power the web application.
- */
- @Override
- public void onStartup(final ServletContext sc) throws ServletException {
-
- // Create the 'root' Spring application context
- final AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext();
- root.scan("com.baeldung.spring.web.config");
- // root.getEnvironment().setDefaultProfiles("embedded");
-
- sc.addListener(new ContextLoaderListener(root));
-
- // Handles requests into the application
- final ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext()));
- appServlet.setLoadOnStartup(1);
-
- // final MultipartConfigElement multipartConfigElement = new
- // MultipartConfigElement(TMP_FOLDER, MAX_UPLOAD_SIZE,
- // MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2);
- //
- // appServlet.setMultipartConfig(multipartConfigElement);
-
- final Set mappingConflicts = appServlet.addMapping("/");
- if (!mappingConflicts.isEmpty()) {
- throw new IllegalStateException("'appServlet' could not be mapped to '/' due " + "to an existing mapping. This is a known issue under Tomcat versions " + "<= 7.0.14; see https://issues.apache.org/bugzilla/show_bug.cgi?id=51278");
- }
- }
-
-}
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java
index 11be08a79d..191d721dfb 100644
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java
+++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java
@@ -3,40 +3,105 @@ package com.baeldung.spring.web.config;
import java.util.ArrayList;
import java.util.List;
+import javax.servlet.ServletContext;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
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.core.io.ClassPathResource;
import org.springframework.http.MediaType;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ViewResolver;
+import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.ResourceBundleViewResolver;
import org.springframework.web.servlet.view.XmlViewResolver;
import org.springframework.web.util.UrlPathHelper;
-import com.baeldung.excel.*;
+import org.thymeleaf.spring4.SpringTemplateEngine;
+import org.thymeleaf.spring4.view.ThymeleafViewResolver;
+import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
+
+import com.baeldung.excel.ExcelPOIHelper;
-@Configuration
@EnableWebMvc
-@ComponentScan("com.baeldung.web")
-public class WebConfig extends WebMvcConfigurerAdapter {
+@Configuration
+@ComponentScan(basePackages = { "com.baeldung.web.controller" })
+public class WebConfig implements WebMvcConfigurer {
- public WebConfig() {
- super();
+ @Autowired
+ private ServletContext ctx;
+
+ @Override
+ public void addViewControllers(final ViewControllerRegistry registry) {
+ registry.addViewController("/").setViewName("index");
+ }
+
+ @Bean
+ public ViewResolver thymeleafViewResolver() {
+ final ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
+ viewResolver.setTemplateEngine(templateEngine());
+ viewResolver.setOrder(1);
+ return viewResolver;
}
- // @Bean
- // public StandardServletMultipartResolver multipartResolver() {
- // return new StandardServletMultipartResolver();
- // }
+ @Bean
+ public ViewResolver viewResolver() {
+ final InternalResourceViewResolver bean = new InternalResourceViewResolver();
+ bean.setViewClass(JstlView.class);
+ bean.setPrefix("/WEB-INF/view/");
+ bean.setSuffix(".jsp");
+ bean.setOrder(0);
+ return bean;
+ }
+ @Bean
+ @Description("Thymeleaf template resolver serving HTML 5")
+ public ServletContextTemplateResolver templateResolver() {
+ final ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(ctx);
+ templateResolver.setPrefix("/WEB-INF/templates/");
+ templateResolver.setSuffix(".html");
+ templateResolver.setTemplateMode("HTML5");
+ return templateResolver;
+ }
+
+ @Bean
+ @Description("Thymeleaf template engine with Spring integration")
+ public SpringTemplateEngine templateEngine() {
+ final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
+ templateEngine.setTemplateResolver(templateResolver());
+ return templateEngine;
+ }
+
+ @Bean
+ @Description("Spring message resolver")
+ public MessageSource messageSource() {
+ final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
+ messageSource.setBasename("messages");
+ return messageSource;
+ }
+
+ @Override
+ public void addResourceHandlers(final ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
+ }
+
+ @Override
+ public void configureContentNegotiation(final ContentNegotiationConfigurer configurer) {
+ configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true).useRegisteredExtensionsOnly(false).defaultContentType(MediaType.APPLICATION_JSON).mediaType("xml", MediaType.APPLICATION_XML).mediaType("json",
+ MediaType.APPLICATION_JSON);
+ }
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
@@ -45,23 +110,7 @@ public class WebConfig extends WebMvcConfigurerAdapter {
return multipartResolver;
}
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/sample.html");
- }
-
- @Bean
- public ViewResolver internalResourceViewResolver() {
- final InternalResourceViewResolver bean = new InternalResourceViewResolver();
- bean.setViewClass(JstlView.class);
- bean.setPrefix("/WEB-INF/view/");
- bean.setSuffix(".jsp");
- bean.setOrder(2);
- return bean;
- }
-
+
@Bean
public ViewResolver xmlViewResolver() {
final XmlViewResolver bean = new XmlViewResolver();
@@ -112,5 +161,4 @@ public class WebConfig extends WebMvcConfigurerAdapter {
public ExcelPOIHelper excelPOIHelper() {
return new ExcelPOIHelper();
}
-
-}
+}
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketConfig.java
index 93ec13da58..0793658e90 100644
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketConfig.java
+++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketConfig.java
@@ -2,13 +2,13 @@ package com.baeldung.spring.web.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
-import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
+import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
-public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
+public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(final MessageBrokerRegistry config) {
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketSendToUserConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketSendToUserConfig.java
index 7f14380e5e..dbd52e20ba 100644
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketSendToUserConfig.java
+++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebSocketSendToUserConfig.java
@@ -6,9 +6,9 @@ import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.WebSocketHandler;
-import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
+import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.server.support.DefaultHandshakeHandler;
import javax.servlet.http.HttpSession;
@@ -16,7 +16,7 @@ import java.util.Map;
@Configuration
@EnableWebSocketMessageBroker
-public class WebSocketSendToUserConfig extends AbstractWebSocketMessageBrokerConfigurer {
+public class WebSocketSendToUserConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/SampleController.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/SampleController.java
new file mode 100644
index 0000000000..c13986e005
--- /dev/null
+++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/SampleController.java
@@ -0,0 +1,13 @@
+package com.baeldung.web.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@Controller
+public class SampleController {
+ @GetMapping("/sample")
+ public String showForm() {
+ return "sample";
+ }
+
+}
diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
index b628228b7e..384bd85ec6 100644
--- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
+++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
@@ -20,12 +20,12 @@ import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
-import com.baeldung.spring.web.config.ApplicationConfig;
+import com.baeldung.spring.web.config.WebConfig;
import com.baeldung.spring.web.config.WebConfig;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
-@ContextConfiguration(classes = { ApplicationConfig.class, WebConfig.class })
+@ContextConfiguration(classes = { WebConfig.class, WebConfig.class })
public class GreetControllerIntegrationTest {
@Autowired