Bean Scopes
At the time of bean Object creation, we can pass the scope to the bean.
Container will create the Object by considering the Scope
We have 5 types of bean Scopes
1. Singleton
2. Prototype
3. Request
4. Session
5. Global-session
Example: see here SimpleBean.java, SimpleMain.java is common for all. Only simple.xml is vary.
// SimpleBean.java
package bean;
public class SimpleaBean {
private String msg;
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
System.out.println(msg);
return msg;
}
}
// SimpleMain.java
package main;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import bean.SimpleaBean;
public class SimpleMain {
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("res/simple.xml");
SimpleaBean b1 = (SimpleaBean) factory.getBean("ob");
b1.setMsg("Hello.....");
b1.getMsg();
SimpleaBean b2 = (SimpleaBean) factory.getBean("ob");
b2.getMsg();
}
}
1) Singleton : Spring to return the same bean instance each time one is needed (default).
Example: simple.xml
<beans>
<bean id="ob" class="bean.SimpleaBean" scope="singleton"/>
</beans>
Output
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Hello.....
Hello.....
2) Prototype : Spring to produce a new bean instance each time the new Object is needed.
Example: simple.xml
<beans>
<bean id="ob" class="bean.SimpleaBean" scope="prototype"/>
</beans>
|
Output
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Hello.....
Null
3) Request : This scopes a bean definition to an HTTP request. Only valid in the context of a web-aware Spring ApplicationContext.
4) Session : This scopes a bean definition to an HTTP session. Only valid in the context of a web-aware Spring ApplicationContext.
5) Global-session : This scopes a bean definition to a global HTTP session. Only valid in the context of a web-aware Spring ApplicationContext.