Spring3.2.12
Struts2.3.20
看struts代码:
@Component
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@ParentPackage("struts-default")
@Namespace("/test")
public class TestAction {
private String flag;
@Action(value = "testAction", results = { @Result(name = "success", location = "/index.jsp") })
public String test() {
System.out.println("request struts.");
try {
WebApplicationContext context = WebApplicationContextUtils
.getWebApplicationContext(ServletActionContext.getServletContext());
TestAction test = context.getBean("testAction", TestAction.class);
System.out.println("this:" + this.flag+"\t" + this);
System.out.println("spring:" + test.flag+"\t" + test);
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
@PostConstruct
public void setFlag() {
this.flag = "From Spring";
}
运行结果:
request struts.
this:From Spring toString:com.me.permission.action.TestAction@732efcfe
spring:From Spring toString:com.me.permission.action.TestAction@2140243b
request struts.
this:From Spring toString:com.me.permission.action.TestAction@11e3c2c6
spring:From Spring toString:com.me.permission.action.TestAction@2140243b
request struts.
this:From Spring toString:com.me.permission.action.TestAction@521d590d
spring:From Spring toString:com.me.permission.action.TestAction@2140243b
运行结果 说明,spring中持有一个TestAction的对象,而且是单例;
请求action的时候,是spring给struts生成的action,但是每一次都是新的,并不是spring所持有的那个单例,这是为什么哪?
怎么才能让spring所持有的那个单例,给struts哪?让struts每次请求都使用spring中所持有的那个单例。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。