2011-12-22 72 views
0

當我創建了一些類如下面Spring Security的實例類

@Controller 
public class MYTokenEndpoint extends AbstractEndpoint { 

    public MYTokenEndpoint(){ 
     System.out.println("A"); 
    } 


    @RequestMapping(value = "/oauth/itop_token") 

調用其構造與此日誌

org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.s[email protected]198d9cf: defining beans 

和構造函數調用後,它與此日誌

org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource - Adding security method 
再次呼籲

發生了什麼?

感謝

我發現一些問題,當我的web應用程序加載豆

我的web.xml LS像下面

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <display-name>secyrity</display-name> 

    <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.action</param-value> 
     </init-param> 
    </filter> 

     <filter> 
     <filter-name>encodingFilter</filter-name> 
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
     <init-param> 
      <param-name>encoding</param-name> 
      <param-value>utf-8</param-value> 
     </init-param> 
    </filter> 

    <filter-mapping> 
     <filter-name>encodingFilter</filter-name> 
     <url-pattern>*.do</url-pattern> 
    </filter-mapping> 

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

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath*:com/my/secyrity/config/spring/context-*.xml</param-value> 
    </context-param> 

    <!-- Creates the Spring Container shared by all Servlets and Filters --> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- Processes application requests --> 
    <servlet> 
     <servlet-name>action</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/config/secyrity/springmvc/secyrity-*.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>action</servlet-name> 
     <url-pattern>*.do</url-pattern> 
     <url-pattern>/restful/*</url-pattern> 
     <url-pattern>/oauth/*</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
    </login-config> 

    <session-config> 
     <session-timeout>3600</session-timeout> 
    </session-config> 

    <!--  
    <error-page> 
     <error-code>404</error-code> 
     <location>/code404.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>500</error-code> 
     <location>/code500.jsp</location> 
    </error-page> 
    --> 
</web-app> 

ContextLoadListner加載我曾經控制器和

春天時的安全性把我的控制器兩次裝上

如何解決它

感謝

回答

0

當使用CGLIB代理,被代理類的構造函數應用方面被調用了兩次,這是一種正常的行爲,見7.6 Proxying mechanisms