4

Spring次のように宣言されたBean があります。

<osgi:reference id="basicAuthSecurityHandler" interface="com.groupgti.handler.authentication.basic.Handler"/>
<bean id="securityHandler" factory-bean="basicAuthSecurityHandler" factory-method="getSecurityHandler"/>

私のgetSecurityHandler方法は次のようになります。

public ConstraintSecurityHandler getSecurityHandler(String realm) {
    ConstraintSecurityHandler handler =(ConstraintSecurityHandler) factory.getBean("securityHandler");
    handler.setRealmName(realm);
    return handler;
}

このsecurityHandlerBean はスコープ内にありますprototypegetSecurityHandlerスプリングで構築するときは、パラメータをメソッドに渡す必要があります。これは可能ですか?それに関するドキュメントが見つかりません。

4

2 に答える 2

5

私がそれを機能させた唯一の方法はこれです:

<osgi:reference id="basicAuthSecurityHandler" interface="com.groupgti.handler.authentication.basic.Handler"/>

<bean id="securityHandler" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" ref="basicAuthSecurityHandler"/>
    <property name="targetMethod" value="getSecurityHandler"/>
    <property name="arguments">
        <list>
            <value type="java.lang.String">${com.groupgti.esb.targetjobs.indeed.userRealm}</value>
        </list>
    </property>
</bean>

私は使用しなければなりませんでしたMethodInvokingFactoryBean。を使用しようとしましconstructor-argたが、そのようなコンストラクターがないという例外が発生しました。MethodInvokingFactoryBeanすべてを使用すると正常に動作します。

于 2012-09-04T12:21:33.657 に答える
1

Spring の古いバージョンでは、constructor-arg> を使用してこれを行うことができました。こちらのドキュメントを参照してください。あなたはおそらくまだそれを行うことができます。試していません!

于 2012-09-04T10:55:09.473 に答える