Aashish
Aashish

Reputation: 31

@scope("prototype") not working properly

Consider the following configuration

 public class MainApp {
        public static void main(String args[]){

            ApplicationContext ac=new ClassPathXmlApplicationContext("src/Beans.xml");
            HelloWorld obj1=(HelloWorld) ac.getBean("helloWorld");
            obj1.setMessage("OBJ1");
            HelloWorld obj2=(HelloWorld) ac.getBean("helloWorld");
            //obj2.setMessage("OBJ2");
            System.out.println(obj1.getMessage());
            System.out.println(obj2.getMessage());
        }
    }

    @Scope("prototype")

    public class HelloWorld {
    String message;
        public String getMessage() {
            return "Your Message:"+message;
        }
        public void setMessage(String message) {
            this.message = message;
        }
        }


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.0.xsd">
               <context:annotation-config />
               <context:component-scan base-package="SpringDemo.src"  />
                 <bean id="helloWorld" class="src.HelloWorld">
           </bean>
          </beans>

If i am not wrong it is showing the behavior of a Singleton scope. can someone let me know why it is not behaving as a "Prototype" scope?

Upvotes: 0

Views: 1743

Answers (1)

Evgeni Dimitrov
Evgeni Dimitrov

Reputation: 22506

You have this <bean id="helloWorld" class="src.HelloWorld"> in the xml configuration. When no scope is specified the scope defaults to singleton. The xml configuration overrides the annotation. Remove @Scope("prototype") and add scope="prototype" in the xml.

Upvotes: 4

Related Questions