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