AuthenticationEntryPoint
是一個功能接口(一個只包含一個公共方法的接口:commence
)。可以使用Java Lambda表達式創建功能接口類。
在前期的Java 8的編程風格,你可以使用一個anonymous class:
@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
匿名類。
爪哇8 lambda表達式提供語法糖到代碼減少到剛好:調用時
return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
request, response, authException
將被提供給該方法。
此處瞭解詳情:https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
閱讀一些有關依賴注入和Java 8 – AndreyS
歡迎的Java 8這就是所謂的lambda表達式。 Java 8已經出現幾年了,所以你會發現大量的教程和文檔。 –