在 struts2_spring_plugin.xml配置文件中有一个strus.objectFactory.spring.autoWire 属性 默认值为name 也就是说你不想装载,它都会找个id为name的bean给你装载上(这个插件在产生Action的时候它会自动的把action的属性给注入进来,默认是按name注入),比如说:
@Resource(name="userManager")
public void setUm(UserManager um) {
this.um = um;
}
如果你没加前面的@Resource(name="userManager") ,它也会自动去给你找一个id是um的bean给你注入。
还有一点就是,若已经通过name自动匹配找了一个bean那么不论在@component(name=“xxxx”)的name配什么都不会再去找了。
解决问题:属性名不要和其他无关的bean的id相同,比如说UserAction里面有个User(SetUser())那么这个UserAction就不要叫 @Resource(name="user")了,可以改为
@Resource(name="useraction") ,也就是说Action的id不要与里面的属性重名