This commit extract spring-related links and recurring external links into asciidoctor attributes to be used by the Antora toolchain. It notably homogenizes links to: - IETF RFCs - Java Community Process JSRs - the Java API Documentation (on the Java 17 version) - Kotlin documentations (on the Kotlinlang.org version) - the Spring Boot reference guide (on the `html` version) This commit also reworks most link attributes to follow a Project-Category-Misc syntax. For example, `spring-boot-docs` rather than `docs-spring-boot`. Finally, it makes an effort to clean up remainders from the previous documentation toolchain, namely the `docs/asciidoc` folder and `modules/ROOT/pages/attributes.adoc` file. Closes gh-26864 Closes gh-31619
30 lines
1.4 KiB
Plaintext
30 lines
1.4 KiB
Plaintext
[[kotlin-annotations]]
|
|
= Annotations
|
|
|
|
The Spring Framework also takes advantage of {kotlin-docs}/null-safety.html[Kotlin null-safety]
|
|
to determine if an HTTP parameter is required without having to explicitly
|
|
define the `required` attribute. That means `@RequestParam name: String?` is treated
|
|
as not required and, conversely, `@RequestParam name: String` is treated as being required.
|
|
This feature is also supported on the Spring Messaging `@Header` annotation.
|
|
|
|
In a similar fashion, Spring bean injection with `@Autowired`, `@Bean`, or `@Inject` uses
|
|
this information to determine if a bean is required or not.
|
|
|
|
For example, `@Autowired lateinit var thing: Thing` implies that a bean
|
|
of type `Thing` must be registered in the application context, while `@Autowired lateinit var thing: Thing?`
|
|
does not raise an error if such a bean does not exist.
|
|
|
|
Following the same principle, `@Bean fun play(toy: Toy, car: Car?) = Baz(toy, Car)` implies
|
|
that a bean of type `Toy` must be registered in the application context, while a bean of
|
|
type `Car` may or may not exist. The same behavior applies to autowired constructor parameters.
|
|
|
|
NOTE: If you use bean validation on classes with properties or a primary constructor
|
|
parameters, you may need to use
|
|
{kotlin-docs}/annotations.html#annotation-use-site-targets[annotation use-site targets],
|
|
such as `@field:NotNull` or `@get:Size(min=5, max=15)`, as described in
|
|
{stackoverflow-site}/a/35853200/1092077[this Stack Overflow response].
|
|
|
|
|
|
|
|
|