附注

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

以类似的方式,带有 、 或 的 Spring bean 注入使用 此信息用于确定 Bean 是否是必需的。@Autowired@Bean@Injectspring-doc.cn

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

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

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