Spring Framework 还利用 Kotlin null-safety 来确定是否需要 HTTP 参数,而无需显式 定义属性。这意味着被治疗 不是必需的,反之,被视为必需的。 Spring Messaging 注解也支持此功能。required@RequestParam name: String?@RequestParam name: String@Header

以类似的方式,春豆注射用、、或使用 此信息用于确定是否需要 Bean。@Autowired@Bean@Inject

例如,暗示 Bean 必须在应用程序上下文中注册 of 类型,如果此类 Bean 不存在,则不会引发错误。@Autowired lateinit var thing: ThingThing@Autowired lateinit var thing: Thing?

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

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