2016-04-15 7 views
1

私は依存性注入のためにSpringでStruts2を使用しています。Springを使用してHttpServletRequest(ServletRequestAwareを実装するStruts2アクションから)をプロパティに挿入します。

私はその中HttpServletRequestといくつかの依存関係Bにアクセスすることができ、そこからStrutsアクションAを持っている:

public class A extends ActionSupport implements ServletRequestAware { 
    private B b; 
    private HttpServletRequest request; 

    @Override 
    public void setServletRequest(HttpServletRequest httpServletRequest) 
    { 
     this.httpServletRequest = httpServletRequest; 
    } 

    public B getB() { 
     return this.b; 
    } 

    public void setB(B b) { 
     this.b = b; 
    } 
} 

application-context.xmlもあります:

<bean id="b" class="com.example.B" /> 
<bean id="a" class="com.example.actions.A"> 
    <property name="b" ref="b" /> 
</bean> 

プログラムが動作しますが、ここでは私の問題です:依存関係Bは、正しく機能するためにはHttpServletRequestが必要です。 Bに春を挿入する方法はありますか?今私はそれを必要とするメソッドに手動でHttpServletRequestオブジェクトを渡す必要があります。

答えて

1

BにBを挿入する方法はありますか?

はい、ただしBはリクエストスコープにする必要があります。

あなたはStrutsのリクエストオブジェクトを渡しますが、あなたのアクションはSpringによって管理され、Spring DIを使用してHttpServletRequestオブジェクトを注入しますか?あなたはRequestAttributes経由でスレッドにバインドされているオブジェクトだけを注入できます。

このオブジェクトは、Springで使用できる場合にのみ挿入できます。リクエストオブジェクトを他の方法で取得することはできますが、注入は対応するスコープに対してのみ機能します。

関連する問題