/ / Jak programowo zainstalować bieżącą instancję SpringApplication w trybie wiosennego rozruchu? - Jawa, wiosna, wiosenny but

Jak programowo pobrać bieżącą instancję SpringApplication w trybie wiosennego rozruchu? - Jawa, wiosna, wiosenny but

Jak programowo pobrać aktualną instancję SpringApplication w trybie wiosennego rozruchu? Jak mówią wiosny: SpringApplication ma metodę zwaną isWebEnvironment() . Nie wiem, jak stwierdzić, czy aplikacja jest aplikacją webową lub inną niż programistyczna, czy mogę ją pobrać ApplicationContext.getEnvironment() ? Przy okazji, nie chcę tego rozwiązywać, szukając xxServlet lubić HttpServletRequest ... itd.

Odpowiedzi:

0 dla odpowiedzi № 1

Co powiesz na applicationContext instanceof WebApplicationContext?

Jeśli próbujesz po prostu określić, czy twoja aplikacja działa w kontekście sieciowym, możesz użyć faktu, że gdy aplikacja Spring zostanie uruchomiona w kontekście sieciowym, ApplicationContext obiekt, do którego masz dostęp, jest instancją programu WebApplicationContext berło. Dlatego możesz po prostu pisać

isWebEnvironment = (applicationContext instanceof WebApplicationContext);

Nie ma prawdziwego powodu, aby zdobyć SpringApplication obiekt ze swojej klasy, ponieważ jego jedynym celem jest zbudowanie ApplicationContext.


0 dla odpowiedzi nr 2

Jeśli używasz Spring Boot możesz użyć tego:

String[] springBootAppBeanName = applicationContext.getBeanNamesForAnnotation(org.springframework.boot.autoconfigure.SpringBootApplication.class);
applicationContext.getBean(springBootAppBeanName[0]);

Spowoduje to odtworzenie nazw fasoli sprężynowej, do których przypisano adnotacje @SpringBootApplication, po otrzymaniu ich możesz łatwo uzyskać instancję po imieniu.