如果在扩展Spring安全性类的类中使用,则自动装配不起作用

时间:2014-10-31 09:24:00

标签: spring spring-mvc spring-security

我无法在扩展Spring安全类(org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler)的类中“自动装配”。

我通过在security-config.xml中添加以下代码来实现它的工作,这些代码已经在xml spring配置文件中编写:<context:annotation-config /><context:component-scan base-package="packagename...."/>以及我自动连接的bean。

我有两个问题:

  1. 为什么我要写两次代码(都在xml spring中 配置文件和security-config.xml)
  2. 有没有办法让security-config.xml“查看”代码 写在xml spring配置文件里面?这样我 不应该两次编写代码。
  3. 谢谢

    enter image description here

1 个答案:

答案 0 :(得分:0)

尝试从main beans.xml导入security-beans.xml。

两个文件都应位于同一文件夹中。导入,例如:

<import resource="spring-security.xml"/>

在你的web.xml中,写下这样的东西:

<!-- to integrate Spring -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
</context-param>

第二种方法 - 单一bean.xml

如果您害怕导入,另一种方法是保存一个包含所有bean的bean.xml - 安全bean以及其他bean。在这种情况下,您的web.xml将如下所示:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>contextAttribute</param-name>
        <param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

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

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

,你的spring beans文件将是spring-servlet.xml。

HTH。