Screenshot 2022-10-20 at 09 36 15

Comment From: wilkinsona

There's a similar, although slightly smaller, tangle with boot and context in 2.7 as well:

Screenshot 2022-10-20 at 09 44 39

And in 2.6 in an even smaller form:

Screenshot 2022-10-20 at 09 46 25

It looks as if we introduced this tangle in 2.5. In 2.4, where there's no tangle, the boot -> context reference is there, but there's no context -> boot reference.

Comment From: wilkinsona

The tangle between boot and properties is due to SpringApplication using ConfigurationPropertiesReflectionHintsProcessor. This one is new in 3.0. It feels like the processor may be in the wrong package. SpringApplication uses the binder rather than @ConfigurationProperties. Unfortunately, moving the processor into the same package as the binder (org.springframework.boot.context.properties.bind) doesn't fix the tangle as the processor depends on NestedConfigurationProperty which is in the processor's current package.

Comment From: wilkinsona

I wonder if NestedConfigurationProperty should move too? Binding can either be through @EnableConfigurationProperties or programmatic use of the binder. For the latter, you may need to use NestedConfigurationProperty so that the reflection hints processor produces the right metadata for your programmatic binding. As such, it feels right that both the reflection hints processor and the annotation should be in org.springframework.boot.context.properties.bind along side the binder API.