struts的多例模式说明
一、struts的多例模式
默认情况下,struts是多例的,即每个请求过来都会创建一个新的action对象。
二、spring与struts的多例模式
public class LoginAction extends ActionSupport {
@Autowired
private MyService myService;
private List<Integer> list = new ArrayList<Integer>();
@Override
public String execute() {
myService.print();
list.add(1);
return LOGIN;
}
}
上面代码是一个login的action,其中自动注入了MyService对象。
说明:
- 虽然struts默认是多例的,但是每个请求过来,重新生成的LoginAction中的myService成员变量都是指向了同一个,这是因为spring bean是单例的。
- 成员变量list,在每一个请求过来后都是重新生成的,因为list的生成与spring无关。每次请求过来,struts都会重新生成一个LoginAction对象,list作为成员变量也会重新生成。因此,每次list在add前都为空。