我定义了以下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,而不是会话范围。
答案 0 :(得分:0)
Bean将具有会话或原型范围,但从不使用单例。