diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index 0d6e434713..622a5c0f42 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -26,6 +26,7 @@
spring-boot-artifacts
spring-boot-autoconfiguration
spring-boot-basic-customization
+ spring-boot-basic-customization-2
spring-boot-bootstrap
spring-boot-client
spring-boot-config-jpa-error
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/README.md b/spring-boot-modules/spring-boot-basic-customization-2/README.md
new file mode 100644
index 0000000000..faaee0962e
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/README.md
@@ -0,0 +1,7 @@
+## Spring Boot Basic Customization 2
+
+This module contains articles about Spring Boot customization 2
+
+### Relevant Articles:
+
+ - [DispatcherServlet and web.xml in Spring Boot](https://www.baeldung.com/)
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/pom.xml b/spring-boot-modules/spring-boot-basic-customization-2/pom.xml
new file mode 100644
index 0000000000..3ce9266ebe
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+
+
+ com.baeldung.spring-boot-modules
+ spring-boot-modules
+ 1.0.0-SNAPSHOT
+ ../
+
+
+ spring-boot-basic-customization-2
+ jar
+
+ spring-boot-basic-customization-2
+ Module For Spring Boot Basic Customization 2
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/DispatchServletApplication.java b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/DispatchServletApplication.java
new file mode 100644
index 0000000000..4d58715d88
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/DispatchServletApplication.java
@@ -0,0 +1,15 @@
+package com.baeldung.dispatchservlet;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@SpringBootApplication
+public class DispatchServletApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(DispatchServletApplication.class, args);
+ }
+
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/conf/WebConf.java b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/conf/WebConf.java
new file mode 100644
index 0000000000..7c52b117fd
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/conf/WebConf.java
@@ -0,0 +1,29 @@
+package com.baeldung.dispatchservlet.conf;
+
+import com.baeldung.dispatchservlet.listener.CustomListener;
+import com.baeldung.dispatchservlet.servlet.CustomServlet;
+import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.servlet.ServletContextListener;
+
+@Configuration
+public class WebConf {
+
+ @Bean
+ public ServletRegistrationBean customServletBean() {
+ ServletRegistrationBean bean
+ = new ServletRegistrationBean(new CustomServlet(), "/servlet");
+ return bean;
+ }
+
+ @Bean
+ public ServletListenerRegistrationBean customListenerBean() {
+ ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean();
+ bean.setListener(new CustomListener());
+ return bean;
+ }
+
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/controller/Controller.java b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/controller/Controller.java
new file mode 100644
index 0000000000..14d71c60fb
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/controller/Controller.java
@@ -0,0 +1,15 @@
+package com.baeldung.dispatchservlet.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping(value = "/")
+public class Controller {
+
+ @GetMapping
+ public String getRequest(){
+ return "Baeldung DispatcherServlet";
+ }
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/filter/CustomFilter.java b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/filter/CustomFilter.java
new file mode 100644
index 0000000000..8429fc855f
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/filter/CustomFilter.java
@@ -0,0 +1,30 @@
+package com.baeldung.dispatchservlet.filter;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import java.io.IOException;
+
+@Component
+public class CustomFilter implements Filter {
+
+ Logger logger = LoggerFactory.getLogger(CustomFilter.class);
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ logger.info("CustomFilter is invoked");
+ chain.doFilter(request, response);
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/listener/CustomListener.java b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/listener/CustomListener.java
new file mode 100644
index 0000000000..62b316c012
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/listener/CustomListener.java
@@ -0,0 +1,22 @@
+package com.baeldung.dispatchservlet.listener;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+public class CustomListener implements ServletContextListener {
+
+ Logger logger = LoggerFactory.getLogger(CustomListener.class);
+
+ @Override
+ public void contextInitialized(ServletContextEvent sce) {
+ logger.info("CustomListener is initialized");
+ }
+
+ @Override
+ public void contextDestroyed(ServletContextEvent sce) {
+ logger.info("CustomListener is destroyed");
+ }
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/servlet/CustomServlet.java b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/servlet/CustomServlet.java
new file mode 100644
index 0000000000..2a99e797ce
--- /dev/null
+++ b/spring-boot-modules/spring-boot-basic-customization-2/src/main/java/com/baeldung/dispatchservlet/servlet/CustomServlet.java
@@ -0,0 +1,29 @@
+package com.baeldung.dispatchservlet.servlet;
+
+import com.baeldung.dispatchservlet.filter.CustomFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class CustomServlet extends HttpServlet {
+
+ Logger logger = LoggerFactory.getLogger(CustomServlet.class);
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ logger.info("CustomServlet doGet() method is invoked");
+ super.doGet(req, resp);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ logger.info("CustomServlet doPost() method is invoked");
+ super.doPost(req, resp);
+ }
+}
diff --git a/spring-boot-modules/spring-boot-basic-customization-2/src/main/resources/application.properties b/spring-boot-modules/spring-boot-basic-customization-2/src/main/resources/application.properties
new file mode 100644
index 0000000000..e69de29bb2