谁解释一下在 Struts2的Action中被@PostConstruct注解的方法,在页面请求action其他方法时也会调用
@PostConstruct
public void init()
{
System.out.println("init");
}
public String execute()
{
System.out.println("execute");
return SUCCESS;
}
做了一个小实验:写一个普通Action,加上一个@PostConstruct注解的方法,然后
从页面上反复请求这个action的时候,每次都会发现init()方法在execute方法之前执行了
,这次什么原理,希望有人解答一下。
按照我的理解是,@PostConstruct只在Action被Spring实例化的时候调用的,但是为什么页面请求这个Action的时候,@PostConstruct注解的方法还会调用。我不理解的是这个,不是PostConstruct的调用顺序。
其实还有更有意思的事
@Resource
private IDAO dao;
@PostConstruct
public void init()
{
System.out.println(dao==null);
}
public String execute()
{
System.out.println("execute");
return SUCCESS;
}
再做一个实验:注入一个dao,可以发现在Spring初始化容器的时候,init方法输出“false”,但是在页面请求action的时候,init则输出“true”。甚是不解。
从小信春哥
12 years, 7 months ago