Files
spring-boot/spring-boot-project
Andy Wilkinson 9d2cb162e6 Configure initializer dependencies grouped by detector
Previously, database initializers were detected and were configured
with dependencies based on their detection order. For example, if
detectors a, b, and c detected initializers a1, b1, b2, and c1,
c1 would depend on b2, b2 on b1, and b1 on a1:

------     ------     ------     ------
| c1 | --> | b2 | --> | b1 | --> | a1 |
------     ------     ------     ------

This could cause a dependency cycle in certain situations, for
example because the user had already configured b1 to depend on b2.

This commit reduces the risk of a cycle being created by batching
the initializers by their detector, with dependencies being
configured between each batch rather than between every initializer.
In the example above, this results in c1 depending on b1 and b2,
and b1 and b2 depending on a1:

           ------
------     | b1 |     ------
| c1 | --> |    | --> | a1 |
------     | b2 |     ------
           ------

As b1 and b2 were detected by the same detector, no dependency
between those initializers is defined.

Closes gh-27131
2021-07-19 20:00:59 +01:00
..