哪个范围有一个通过单件工厂bean创建的bean

时间:2014-05-28 13:10:00

标签: spring session scope singleton javabeans

我定义了以下bean:

<bean id="factoryBean" class="com.example.MyFactory" factory-method="getMyBean"/>

<bean id="myBeanSession" class="com.example.bean.impl.myBeanSessionImpl" scope="session" lazy-init="true">
<aop:scoped-proxy/>
</bean>     

<bean id="myBeanNoSession" class="com.example.bean.impl.myBeanNoSessionImpl" scope="prototype" lazy-init="true"/>   

MyFactory.java:

public abstract class MyFactory{

public static MyBean getMyBean(){       
    MyBean myBean=null;
    try{
       myBean=(MyBean)Application.getBean("MyBeanSession");         
    } catch (RuntimeException e) {
       if (e instanceof IllegalStateException || 
                     e instanceof BeanCreationException) {
        myBean=(MyBean )Application.getBean("MyBeanNoSession");

       } else
            throw e;
    }       
    return myBean;
}

factoryBean是一个单例,myBeanSession是session,myBeanNoSession是原型。

如果没有抛出异常,那么myBeanSession是通过getMyBean方法创建的,哪个范围有创建的bean?

在我们正在进行的测试中,它似乎是一个单例范围bean,而不是会话范围。

1 个答案:

答案 0 :(得分:0)

Bean将具有会话或原型范围,但从不使用单例。