1. ホーム
  2. spring

[解決済み] 例外を取得しました。springSecurityFilterChain'という名前のビーンが定義されていません。

2022-02-12 23:57:23

質問

Spring Securityを参考資料で勉強しています。リリース3.1.2.RELEASEです。その中に記載されているように、私は security:http タグは次のようなものです。

セキュリティコンテキスト.xml

<security:http auto-config="true">
        <security:intercept-url pattern="/**" access="ROLE_USER"/>
    </security:http>

web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:*-context.xml</param-value>
  </context-param>

  <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>security</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>security</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

セキュリティサ-ブレット.xml

<context:component-scan base-package="com.pokuri.security.mvc.controllers"/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/page/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

しかし、アプリケーションを起動すると、この例外が発生します。セキュリティ設定を削除すると、私のスプリングウェブアプリケーションは正常に動作します。私はstackoverflowで同じような質問を通過しました。しかし、運がない。

どうすればいいですか?

Webアプリの起動時に、Spring Securityのxml設定ファイルが読み込まれていないことが原因だと思われます。

これを解決するには、web.xml ですべての XML 設定ファイルをこのように指定する必要があります。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-security.xml, /WEB-INF/applicationContext.xml</param-value>
</context-param>

WEB-INF フォルダやそのサブフォルダではなく、クラスパスに設定ファイルがある場合は、このように設定ファイルのリストを指定することができます。

...
<param-value>
    classpath:applicationContext.xml,
    classpath:spitter-security.xml
</param-value>
...

また、設定ファイルを読み込むための特別なリスナーを追加する必要があります。

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>