Spring Security Kotlinmultiple methods(?)语法

pu3pd22g  于 2023-04-06  发布在  Spring
关注(0)|答案(1)|浏览(97)

我正在研究Spring安全性,在官方Spring文档中发现了一个代码片段,我无法解释,Idea显示它在语法上不正确

@Bean
open fun filterChain(http: HttpSecurity): SecurityFilterChain {
   http {
        authorizeRequests {
            authorize(anyRequest, authenticated)
        }
       formLogin { }
       httpBasic { }
    }
    return http.build()
}

https://docs.spring.io/spring-security/reference/servlet/configuration/kotlin.html
谁能给予我一个提示,如何解析它?我所知道的最接近的Kotlin语法是“multiple methods with”语句,但它是不同的。
此外,术语anyRequest和authenticated看起来未声明/未绑定...
https://kotlinlang.org/docs/idioms.html#call-multiple-methods-on-an-object-instance-with

icomxhvb

icomxhvb1#

这里面有两件事可能牵涉其中。

使用lambda参数调用函数

如果函数的最后一个参数允许传递lambda函数,则调用lambda { }的函数/构造器可以工作。以下所有内容都是等效的:

//normal lambda as parameter
function({...})
//last argument lambda outside of parentheses
function() {...}
//no parentheses for "better" readability
function {...}

功能接口

Kotlin允许单函数接口,也称为单抽象方法。参见文档。有了这个,你可以声明一个函数而不给出一个实现,这对库很有用。

相关问题