It
return new bean instance on each time when the bean is requested.
<bean id="osho" name="osho" class="com.sample.pojo.Author" scope="prototype"> <property name="firstName" value="Chandra Mohan" /> <property name="lastName" value="Jain" /> <property name="dateOfBirth" value="11 December 1931" /> <property name="country" value="India" /> </bean>
Notify
above snippet, I set the scope of bean 'osho' to prototype. So whenever the
bean 'osho' is requested, Spring IOC container returns new bean.
Following
is the complete working application.
Author.java
package com.sample.pojo; public class Author { private String firstName; private String lastName; private String dateOfBirth; private String country; public Author(){ System.out.println("Constructor called"); } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getDateOfBirth() { return dateOfBirth; } public void setDateOfBirth(String dateOfBirth) { this.dateOfBirth = dateOfBirth; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } }
myConfiguration.xml
<?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.xsd"> <bean id="osho" name="osho" class="com.sample.pojo.Author" scope="prototype"> <property name="firstName" value="Chandra Mohan" /> <property name="lastName" value="Jain" /> <property name="dateOfBirth" value="11 December 1931" /> <property name="country" value="India" /> </bean> </beans>
HelloWorld.java
package com.sample.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sample.pojo.Author; public class HelloWorld { public static void main(String args[]) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "myConfiguration.xml" }); Author author1 = context.getBean("osho", Author.class); Author author2 = context.getBean("osho", Author.class); System.out.println("author1 = " + author1); System.out.println("author2 = " + author2); System.out.println("author1 == author2 : " + (author1 == author2)); ((ClassPathXmlApplicationContext) context).close(); } }
Output
Constructor called Constructor called author1 = com.sample.pojo.Author@6d7b4f4c author2 = com.sample.pojo.Author@527740a2 author1 == author2 : false
Notify
the output, constructor called two times, that means two new objects are
created.
No comments:
Post a Comment