我对春天的prototype
范围有疑问。
目前我尝试在spring应用程序中实现向导。
在向导控制器中,我有类似
的内容WizardAbstract类
private List<WizardStep> _steps;
private WizardStep _activeStep;
private int _activeIndex;
public previous(){
if(hasPrevious()){
_activeStep = _steps.get(_activeIndex);
}
}
向导中的一个步骤就是像这样的实现
WizardNameStep类
@Named
@Scope(value="prototype"}
public WizardNameStep implements WizardStep {
private String _name;
@Override
public String getName(){
return _name;
}
@Override
public void setName(String name){
_name = name;
}
}
我的问题是,当我在向导中输入名称的值并转到下一步时,一切都很好。如果我现在回到上一步,我的价值就会丢失。列表中的get是否会创建一个新的prototype
bean?
如何解决范围问题?我不想要无状态的步骤,但需要在步骤中调用一些弹簧服务。
修改
向导的配置类包括步骤的自动装配
@Named(value = "profileEditorWizardController")
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public class ProfileEditorWizardControllerImpl extends WizardControllerAbstract<ProfileEditorWizardResult> implements ProfileEditorWizardController {
@Inject
private WizardNameStep _wizardNameStep;