/ / Как да получите текущо SpringApplication екземпляр в пролет-обувка програмно? - Java, пружина, пружина-обувка

Как да получите текущата SpringApplication инстанция през пролетта-обувка програмно? - java, spring, spring-boot

Как да получите актуален SpringApplication екземпляр в пролет-обувка програмно? Както казва пролетната документация: SpringApplication има метод, наречен isWebEnvironment() , Не знам как да разбера дали дадено приложение е уеб или не-уеб приложение, което мога да получа от него ApplicationContext.getEnvironment() ? Между другото, аз не искам да реша това чрез търсене xxServlet като HttpServletRequest ... и т.н.

Отговори:

0 за отговор № 1

Какво относно applicationContext instanceof WebApplicationContext?

Ако се опитвате просто да определите дали приложението ви се изпълнява в уеб контекст, тогава можете да използвате факта, че когато приложението Spring се стартира в уеб контекст ApplicationContext обектът, до който имате достъп, е инстанция на WebApplicationContext интерфейс. Затова можете просто да пишете

isWebEnvironment = (applicationContext instanceof WebApplicationContext);

Няма реална причина да се получи SpringApplication обект от вашия клас, като единствената му цел е да изгради ApplicationContext.


0 за отговор № 2

Ако използвате Spring Boot можете да използвате това:

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

Това ще извлече имената на пролетни боб, с които са анотирани @SpringBootApplication, след като ги получите можете просто да получите инстанцията с неговото име.