diff --git a/spring-5/.gitignore b/spring-5/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/spring-5/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/spring-5/README.md b/spring-5/README.md
new file mode 100644
index 0000000000..0914388b49
--- /dev/null
+++ b/spring-5/README.md
@@ -0,0 +1,6 @@
+## Spring REST Example Project
+
+###The Course
+The "REST With Spring" Classes: http://bit.ly/restwithspring
+
+### Relevant Articles:
diff --git a/spring-5/pom.xml b/spring-5/pom.xml
new file mode 100644
index 0000000000..c2545d920f
--- /dev/null
+++ b/spring-5/pom.xml
@@ -0,0 +1,345 @@
+
+ 4.0.0
+ com.baeldung
+ spring-5
+ 0.1-SNAPSHOT
+ spring-5
+ war
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+
+ 2.0.0.BUILD-SNAPSHOT
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-devtools
+
+
+
+
+
+ org.springframework
+ spring-web
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ org.springframework
+ spring-webmvc
+
+
+ org.springframework
+ spring-oxm
+
+
+
+ commons-fileupload
+ commons-fileupload
+ ${commons-fileupload.version}
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+
+ javax.servlet
+ jstl
+ runtime
+
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-xml
+
+
+
+ com.thoughtworks.xstream
+ xstream
+ ${xstream.version}
+
+
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+ ch.qos.logback
+ logback-classic
+
+
+
+ org.slf4j
+ jcl-over-slf4j
+
+
+
+ org.slf4j
+ log4j-over-slf4j
+
+
+
+
+
+ com.squareup.okhttp3
+ okhttp
+ ${com.squareup.okhttp3.version}
+
+
+
+
+
+ junit
+ junit
+ test
+
+
+
+ org.hamcrest
+ hamcrest-core
+ test
+
+
+ org.hamcrest
+ hamcrest-library
+ test
+
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+ org.springframework
+ spring-test
+
+
+
+ com.jayway.restassured
+ rest-assured
+ ${rest-assured.version}
+
+
+
+
+ com.google.protobuf
+ protobuf-java
+ ${protobuf-java.version}
+
+
+ com.googlecode.protobuf-java-format
+ protobuf-java-format
+ ${protobuf-java-format.version}
+
+
+
+ com.esotericsoftware
+ kryo
+ ${kryo.version}
+
+
+
+
+ spring-5
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
+ org.codehaus.cargo
+ cargo-maven2-plugin
+ ${cargo-maven2-plugin.version}
+
+ true
+
+ tomcat8x
+ embedded
+
+
+
+
+
+
+ 8082
+
+
+
+
+
+
+
+
+
+
+
+
+ integration
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration-test
+
+ test
+
+
+
+ none
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.3.2
+ 4.0.0
+ 1.4
+ 3.1.0
+ 3.5
+ 1.4.9
+
+
+ 20.0
+ 2.9.0
+
+
+ 1.6.0
+ 3.0.4
+
+
+ 3.4.1
+
+
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ true
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ true
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
diff --git a/spring-5/src/main/java/org/baeldung/config/Application.java b/spring-5/src/main/java/org/baeldung/config/Application.java
new file mode 100644
index 0000000000..077213b04d
--- /dev/null
+++ b/spring-5/src/main/java/org/baeldung/config/Application.java
@@ -0,0 +1,16 @@
+package org.baeldung.config;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+@EnableAutoConfiguration
+@ComponentScan("org.baeldung")
+public class Application extends WebMvcConfigurerAdapter {
+
+ public static void main(final String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+}
\ No newline at end of file
diff --git a/spring-5/src/main/java/org/baeldung/config/WebConfig.java b/spring-5/src/main/java/org/baeldung/config/WebConfig.java
new file mode 100644
index 0000000000..f40c9477d4
--- /dev/null
+++ b/spring-5/src/main/java/org/baeldung/config/WebConfig.java
@@ -0,0 +1,57 @@
+package org.baeldung.config;
+
+import org.baeldung.config.converter.KryoHttpMessageConverter;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter;
+import org.springframework.http.converter.xml.MarshallingHttpMessageConverter;
+import org.springframework.oxm.xstream.XStreamMarshaller;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+/*
+ * Please note that main web configuration is in src/main/webapp/WEB-INF/api-servlet.xml
+ */
+@Configuration
+@EnableWebMvc
+@ComponentScan({ "org.baeldung.web" })
+public class WebConfig extends WebMvcConfigurerAdapter {
+
+ public WebConfig() {
+ super();
+ }
+
+ //
+
+ @Override
+ public void configureMessageConverters(final List> messageConverters) {
+ final Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
+ builder.indentOutput(true).dateFormat(new SimpleDateFormat("dd-MM-yyyy hh:mm"));
+ messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build()));
+ // messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build()));
+
+ // messageConverters.add(createXmlHttpMessageConverter());
+ // messageConverters.add(new MappingJackson2HttpMessageConverter());
+
+ messageConverters.add(new ProtobufHttpMessageConverter());
+ messageConverters.add(new KryoHttpMessageConverter());
+ super.configureMessageConverters(messageConverters);
+ }
+
+ private HttpMessageConverter