2016-11-10 11 views
2
@Bean 
    public AuthenticationEntryPoint unauthorizedEntryPoint() { 
     return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED); 
    } 

これを理解する方法(request, response, authException) ->、これらの3つの変数はすべてどこにありますか?クラスフィールドにはありません。Spring Security Beanを定義するために使用されるJava 8ラムダ式の理解

それは何ですか->

+0

読むのJava 8の依存性注入とJava 8 – AndreyS

+1

ようこそについて何かこれは、ラムダ式と呼ばれています。 Java 8は数年前からリリースされていますので、チュートリアルやドキュメンテーションがたくさんあります。 –

答えて

4

AuthenticationEntryPointは、機能インターフェイス(1つのパブリックメソッドが含まれているインターフェイス:commence)です。機能インタフェースクラスは、Javaラムダ式を使用して作成できます。あなたがanonymous classを使用することができ、事前のJava 8のプログラミングスタイルで

ここ
@Bean 
public AuthenticationEntryPoint unauthorizedEntryPoint() { 
    AuthenticationEntryPoint entryPoint = new AuthenticationEntryPoint() { 
     @Override 
     public void commence(HttpServletRequest request, HttpServletResponse response, 
       AuthenticationException authException) throws IOException, ServletException { 
      response.sendError(HttpServletResponse.SC_UNAUTHORIZED); 
     } 
    }; 
    return entryPoint; 
} 

我々はAuthenticationEntryPoint.commence()の動作を実装するAuthenticationEntryPoint匿名クラスを作成します。

のJava 8のラムダ式はちょうどにコードを減らすために糖衣構文を提供します。呼び出されたときに

return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED); 

request, response, authExceptionは、メソッドに提供されます。ここ

さらに詳しい情報:https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

関連する問題