问题:

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


配置文件:


    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
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
        
       
            
       

        
       
            
            
            
       


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;
/**
 *
 *

Description: 这是一个多例的对象


 * @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());
        
    }
    
}

Spring单例Bean中注入多例Bean_第1张图片


问题解决:

配置文件:


    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
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
        
       
            
       

        
       
            

            

           

           
       


测试结果:

Spring单例Bean中注入多例Bean_第2张图片