0

これは私のeventActionActionSupportクラスです

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を変更する場合を除いて、コードは正常に機能しています。

私の質問<bean id ="eventService">では、Spring IDをEventActionサポートクラス内のeventServiceインスタンス変数と一致させる必要があるのはなぜですか?id作成されるBeanの識別子を作成するだけではありませんか?Beanタグ内のIDがEventAction内で同じである必要があるのはなぜですか?ここで、EventActionクラスは構成で言及されていません。

4

1 に答える 1

0

Springdocsからbeans-beanname

すべてのBeanには1つ以上のIDがあります(識別子または名前とも呼ばれます。これらの用語は同じものを指します)。これらのIDは、Beanがホストされているコンテナ内で一意である必要があります。Beanにはほとんどの場合1つのIDしかありませんが、Beanに複数のIDがある場合、余分なIDは基本的にエイリアスと見なすことができます。XMLベースの構成メタデータを使用する場合は、「id」または「name」属性を使用してBeanIDを指定します。'id'属性を使用すると、IDを1つだけ指定できます。これは、実際のXML要素ID属性であるため、他の要素がIDを参照するときに、XMLパーサーは追加の検証を行うことができます。そのため、BeanIDを指定するための推奨される方法です。ただし、XML仕様では、XMLIDで有効な文字が制限されています。これは通常、制約ではありません。

Spring-Struts2の場合、自動配線戦略を定義する必要があるプラグインを使用しているか、プラグインがデフォルトのプラグインを使用すると思いますname

つまり、Struts2とSpringの間のプラグインブリッジは、提供された自動配線戦略に基づいてBeanを注入しようとします。

Struts2Spring-pluginを参照してください

于 2012-12-03T14:13:14.773 に答える