註解
Spring Framework 還利用 Kotlin 空安全 來確定 HTTP 引數是否必需,而無需明確定義 required 屬性。這意味著 @RequestParam name: String? 被視為非必需,反之,@RequestParam name: String 被視為必需。此功能也受 Spring Messaging @Header 註解支援。
以類似的方式,使用 @Autowired、@Bean 或 @Inject 進行 Spring bean 注入時,會利用此資訊來確定 bean 是否必需。
例如,@Autowired lateinit var thing: Thing 意味著必須在應用程式上下文中註冊 Thing 型別的 bean,而 @Autowired lateinit var thing: Thing? 如果此類 bean 不存在則不會引發錯誤。
遵循相同的原則,@Bean fun play(toy: Toy, car: Car?) = Baz(toy, car) 意味著必須在應用程式上下文中註冊 Toy 型別的 bean,而 Car 型別的 bean 可能存在也可能不存在。同樣的行為也適用於自動裝配的建構函式引數。
如果您對具有屬性的類或具有引數的主建構函式使用 bean 驗證,您可能需要使用 註解使用站點目標,例如 @field:NotNull 或 @get:Size(min=5, max=15),如 此 Stack Overflow 回答 中所述。 |