Java Spring 3和Struts2集成自动布线

Java Spring 3和Struts2集成自动布线,java,spring,struts2,applicationcontext,Java,Spring,Struts2,Applicationcontext,这是我的eventAction行动支持课程 public class EventAction extends ActionSupport { protected EventService eventService; protected String redirectUrl; public String getRedirectUrl() { return redirectUrl; } public void setRedirectUr

这是我的eventAction行动支持课程

public class EventAction extends ActionSupport {

    protected EventService eventService;

    protected String redirectUrl;

    public String getRedirectUrl() {
        return redirectUrl;
    }

    public void setRedirectUrl(String redirectUrl) {
        this.redirectUrl = redirectUrl;
    }

    public void setEventService(EventService services) {
        this.eventService = services;
    }
}
这是我的applicationContext.xml中的一个片段

<bean id ="eventService" class ="services.EventService" scope ="singleton">
        <property name = "sessionFactory" ref = "sessionFactory"/>
    </bean>

除了我在申报单内更改id外,代码工作正常

我的问题是,为什么spring
id必须与EventAction支持类中的eventService实例变量匹配?不是
id
正在为将要创建的bean创建一个标识符吗?为什么bean标记中的id在我的EventAction中应该是相同的,而EventAction类在配置中甚至没有被提及?

来自Spring文档

每个bean都有一个或多个ID(也称为标识符或名称;这些术语指的是同一事物)。这些ID在承载bean的容器中必须是唯一的。一个bean几乎总是只有一个id,但是如果一个bean有多个id,那么额外的id基本上可以被认为是别名。 使用基于XML的配置元数据时,可以使用“id”或“name”属性来指定bean标识符。“id”属性允许您只指定一个id,由于它是一个真正的XML元素id属性,因此当其他元素引用该id时,XML解析器能够执行一些额外的验证;因此,它是指定bean id的首选方法。但是,XML规范确实限制了XML id中合法的字符。这通常不是一个约束,但是如果您需要使用这些特殊的XML字符中的一个,或者希望向bean引入其他别名,您也可以指定一个或多个bean ID,在“name”属性中用逗号(,)、分号(;)或空格分隔

我相信对于Spring-Struts2,您正在使用需要定义自动布线策略的插件,或者插件将使用默认的
name

这意味着当插件在Struts2和Spring之间架桥时,它将尝试根据提供的自动连线策略注入bean