对于最新的稳定版本,请使用 Spring Framework 6.2.10spring-doc.cadn.net.cn

附注

Spring Framework 还利用 Kotlin 空安全来确定是否需要 HTTP 参数,而无需显式定义required属性。 这意味着@RequestParam name: String?被视为不需要,相反,@RequestParam name: String被视为必需的。Spring Messaging 也支持此功能@Header注解。spring-doc.cadn.net.cn

以类似的方式,春豆注射@Autowired,@Bean@Inject使用 此信息用于确定是否需要 bean。spring-doc.cadn.net.cn

例如@Autowired lateinit var thing: Thing意味着 bean类型为Thing必须在应用程序上下文中注册,而@Autowired lateinit var thing: Thing?如果这样的 bean 不存在,则不会引发错误。spring-doc.cadn.net.cn

遵循同样的原则,@Bean fun play(toy: Toy, car: Car?) = Baz(toy, Car)意味 着 那 一种豆子Toy必须在应用程序上下文中注册,而 类型Car可能存在也可能不存在。相同的行为适用于自动连接的构造函数参数。spring-doc.cadn.net.cn

如果对具有属性或主构造函数的类使用 bean 验证参数,则可能需要使用注释 use-site 目标, 如@field:NotNull@get:Size(min=5, max=15),如此 Stack Overflow 响应中所述。