0

Spring SecurityからJdbcUserDetailsManagerを自動配線しようとすると、appcontext.xml(webappとは別に配置)で次のステートメントを使用します。

 <bean class="org.springframework.security.provisioning.JdbcUserDetailsManager">
    <property name="dataSource" ref="dataSource"/>                                                                
</bean>

ユニットテストを実行するときは、すべて問題ありません。元のappcontext.xmlを含む独自のappcontext.xmlを持つWebアプリを起動すると、重複するエラーが発生します。

No unique bean of type 
    [org.springframework.security.provisioning.JdbcUserDetailsManager] is defined:   
        expected single matching bean but found 2: 
    [org.springframework.security.provisioning.JdbcUserDetailsManager#0, 
        org.springframework.security.provisioning.JdbcUserDetailsManager#1]

2つのappcontext.xmlを改良して、サービスレイヤーテストとWebアプリの両方をそれぞれ実行するにはどうすればよいですか?

4

2 に答える 2

6

Web /サーブレットアプリケーションコンテキストにJdbcUserDetailsManagerを含める必要があるのはなぜですか?WebApplicationContextは、メインのApplicationContextを親として「自動的に」取得します(正しく構成されている場合)。WebアプリがメインのApplicationContextの場所を認識できるように、contextConfigLocationを設定する例については、このIBMの記事を参照してください。

またはこの例:contextConfigLocation /WEB-INF/main-application-config.xml

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>mine</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/web-application-config.xml</param-value>
        </init-param>
    </servlet>
于 2010-08-01T17:16:57.877 に答える
1

Bean IDを定義し、@ Qualifierアノテーションを使用して、テストクラスと実際のコードの2つを区別できますか?

于 2010-08-01T16:50:50.107 に答える