I've never been a fan of frameworks for Java apps that are not web servers. I have always found them lacking in features related to organizing the application's internal architecture for non-web server applications. Every year or so I look around to see if that's changed, and I've still never found anything remotely like what I want amongst the big frameworks like Spring Boot, Quarkus, Micronaut, etc. My biggest complaint is the lack of clean build up and tear down mechanisms in these frameworks. What I have been using the last few years is Guava Services (description at https://github.com/google/guava/wiki/ServiceExplained).
Guava's Services let me create a tiered layer system. For example, starting lower level services before the higher level services that are dependent on the lower services. A concrete example is a layer that creates database connection pools is started before the layer that kicks off the business logic that requires access to the database connection pool. Or a layer that starts a Kafka o