Spring单例Bean中注入多例Bean

当在一个单例Bean中注入一个多例Bean的时候,是获取不到那个多例对象的,因为,单例在初始化的时候,就直接初始化,这个多例Bean啦, 一直获取的是第一次初始化的Bean

配置文件:

<?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:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
       
       
        ">
       
        <bean>
           <property ref="prototype"></property>
        </bean>
       
        <bean scope="prototype">
           <property value="刘东"></property>
           <property value="123"></property>
           <!-- <aop:scoped-proxy/> -->
        </bean>
</beans>
 

SingletonObject对象:

package com.lzd.spring.context.resource.test.bean;

public class SingletonObject {

   private PrototypeObject prototype;

   public void setPrototypeObject(PrototypeObject prototype){
       this.prototype = prototype;
   }
   
   public PrototypeObject getPrototype(){
       return this.prototype;
   }
   
}

 

PrototypeObject对象:

package com.lzd.spring.context.resource.test.bean;
/**
 *
 * <P>Description: 这是一个多例的对象</P>
 * @ClassName: PrototypeObject
 * @author lzd  2017年2月15日 上午10:54:52
 */
public class PrototypeObject {

   private String name;
   private String password;
   
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   public String getPassword() {
       return password;
   }
   public void setPassword(String password) {
       this.password = password;
   }
}

 

ApplicationResourceTest测试类:

package com.lzd.spring.context.resource.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lzd.spring.context.resource.test.bean.SingletonObject;

public class ApplicationResourceTest {

   @Test
   public void applicationResource(){
       ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:application.xml"});
       
       
       SingletonObject s = (SingletonObject) context.getBean("single");
       
       for (int i = 0; i < 10; i++)
       System.out.println(s.getPrototype());
       
   }
   
}

 

wKiom1ijypGAyh57AAIS3UbJ9ZM796.png

问题解决:

配置文件:

<?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:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
       
       
        ">
       
        <bean>
           <property ref="prototype"></property>
        </bean>
       
        <bean scope="prototype">
           <property value="刘东"></property>

<property value="123"></property>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8c1efdce62f9ade2b1fe096a68294ef7.html