Java Techies- Solution for All
Spring Bean Scopes
By Default Spring Bean scope is singleton that is only one bean is created per spring container and shared by other objects.
Spring has <bean> tag in which scope is define. To force Spring to produce a new bean instance each time one is needed, you should declare the bean's scope attribute to be prototype.
Syntax : <bean id = "service" class = "com.jtechies.Service" scope="prototype">
The Spring Framework supports five scopes, three of which are available only if you use a web-aware ApplicationContext.
singleton | This scopes the bean definition to a single instance per Spring container. It is by default scope set by spring. |
prototype | This scopes a single bean definition to a new bean instance each time when requested |
request | This scopes a bean definition to an HTTP request. Only valid in the context of a web-aware Spring ApplicationContext. |
session | This scopes a bean definition to an HTTP session. Only valid in the context of a web-aware Spring ApplicationContext. |
global-session | This scopes a bean definition to a global HTTP session. Only valid in the context of a web-aware Spring ApplicationContext. |
Spring Singleton Scope Example
HelloSpring.java File
package com.jtechies; public class HelloSpring { private String message; public void setMessage(String message){ this.message = message; } public String getMessage() { return message; } }
Test.java File
package com.jtechies; import org.springframework.context.ApplicationContext; import org.springframework.context.support. ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); HelloSpring obj1 = (HelloSpring) context.getBean("helloSpring"); obj1.setMessage("Hello spring this is a singleton example !!!"); System.out.println(obj1.getMessage()); HelloSpring obj2 = (HelloSpring) context.getBean("helloSpring"); System.out.println(obj2.getMessage()); } }
Beans.xml File
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans /spring-beans-3.0.xsd"> <bean id="helloSpring" class="com.jtechies.HelloSpring" scope="singleton"/> </beans>
Output
Hello spring this is a singleton example !!! Hello spring this is a singleton example !!!
Spring Prototype Scope Example
HelloSpring.java File
package com.jtechies; public class HelloSpring { private String message; public void setMessage(String message){ this.message = message; } public String getMessage() { return message; } }
Test.java File
package com.jtechies; import org.springframework.context.ApplicationContext; import org.springframework.context.support. ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); HelloSpring obj1 = (HelloSpring) context.getBean("helloSpring"); obj1.setMessage("Hello spring this is a prototype example !!!"); System.out.println(obj1.getMessage()); HelloSpring obj2 = (HelloSpring) context.getBean("helloSpring"); System.out.println(obj2.getMessage()); } }
Beans.xml File
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans /spring-beans-3.0.xsd"> <bean id="helloSpring" class="com.jtechies.HelloSpring" scope="prototype"/> </beans>
Output
Hello spring this is a prototype example !!! null