diff --git a/spring-all/src/main/java/org/baeldung/scopes/HelloMessageGenerator.java b/spring-all/src/main/java/org/baeldung/scopes/HelloMessageGenerator.java
new file mode 100644
index 0000000000..ae1c6157db
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/scopes/HelloMessageGenerator.java
@@ -0,0 +1,15 @@
+package org.baeldung.scopes;
+
+public class HelloMessageGenerator {
+
+ private String message;
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(final String message) {
+ this.message = message;
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/scopes/Person.java b/spring-all/src/main/java/org/baeldung/scopes/Person.java
new file mode 100644
index 0000000000..e6139c31dd
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/scopes/Person.java
@@ -0,0 +1,27 @@
+package org.baeldung.scopes;
+
+public class Person {
+ private String name;
+ private int age;
+
+ public Person() {
+ }
+
+ public Person(final String name, final int age) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Person [name=" + name + "]";
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/scopes/ScopesController.java b/spring-all/src/main/java/org/baeldung/scopes/ScopesController.java
new file mode 100644
index 0000000000..bf733b75f9
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/scopes/ScopesController.java
@@ -0,0 +1,31 @@
+package org.baeldung.scopes;
+
+import javax.annotation.Resource;
+
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+public class ScopesController {
+ public static final Logger LOG = Logger.getLogger(ScopesController.class);
+
+ @Resource(name = "requestMessage")
+ HelloMessageGenerator requestMessage;
+
+ @Resource(name = "sessionMessage")
+ HelloMessageGenerator sessionMessage;
+
+ @RequestMapping("/scopes")
+ public String getScopes(final Model model) {
+ LOG.info("Request Message:" + requestMessage.getMessage());
+ LOG.info("Session Message" + sessionMessage.getMessage());
+ requestMessage.setMessage("Good morning!");
+ sessionMessage.setMessage("Good afternoon!");
+ model.addAttribute("requestMessage", requestMessage.getMessage());
+ model.addAttribute("sessionMessage", sessionMessage.getMessage());
+ return "scopesExample";
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java b/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java
new file mode 100644
index 0000000000..5a9b266388
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java
@@ -0,0 +1,57 @@
+package org.baeldung.spring.config;
+
+import org.baeldung.scopes.HelloMessageGenerator;
+import org.baeldung.scopes.Person;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
+import org.springframework.context.annotation.ScopedProxyMode;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.view.JstlView;
+import org.springframework.web.servlet.view.UrlBasedViewResolver;
+
+@Configuration
+@ComponentScan("org.baeldung.scopes")
+@EnableWebMvc
+public class ScopesConfig {
+ @Bean
+ public UrlBasedViewResolver setupViewResolver() {
+ final UrlBasedViewResolver resolver = new UrlBasedViewResolver();
+ resolver.setPrefix("/WEB-INF/view/");
+ resolver.setSuffix(".jsp");
+ resolver.setViewClass(JstlView.class);
+ return resolver;
+ }
+
+ @Bean
+ @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
+ public HelloMessageGenerator requestMessage() {
+ return new HelloMessageGenerator();
+ }
+
+ @Bean
+ @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
+ public HelloMessageGenerator sessionMessage() {
+ return new HelloMessageGenerator();
+ }
+
+ @Bean
+ @Scope(value = WebApplicationContext.SCOPE_GLOBAL_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
+ public HelloMessageGenerator globalSessionMessage() {
+ return new HelloMessageGenerator();
+ }
+
+ @Bean
+ @Scope("prototype")
+ public Person personPrototype() {
+ return new Person();
+ }
+
+ @Bean
+ @Scope("singleton")
+ public Person personSingleton() {
+ return new Person();
+ }
+}
diff --git a/spring-all/src/main/resources/scopes.xml b/spring-all/src/main/resources/scopes.xml
new file mode 100644
index 0000000000..faecd727fa
--- /dev/null
+++ b/spring-all/src/main/resources/scopes.xml
@@ -0,0 +1,10 @@
+
+