/ / Wie kann ich die aktuelle SpringApplication-Instanz programmgesteuert im Spring-Boot abrufen? - Java, Frühling, Springstiefel

Wie bekomme ich die SpringApplication-Instanz programmgesteuert im Frühling-Boot? - Java, Frühling, Spring-Boot

Wie kann ich die aktuelle SpringApplication-Instanz programmgesteuert im Spring-Boot abrufen? Wie der Frühling sagt: SpringApplication hat eine Methode, die aufgerufen wird isWebEnvironment() . Ich weiß nicht, wie ich programmgesteuert feststellen kann, ob es sich bei einer Anwendung um eine Web- oder Nicht-Webanwendung handelt ApplicationContext.getEnvironment() ? Übrigens möchte ich das nicht durch Suchen lösen xxServlet mögen HttpServletRequest ... etc.

Antworten:

0 für die Antwort № 1

Wie wäre es mit applicationContext instanceof WebApplicationContext?

Wenn Sie einfach feststellen möchten, ob Ihre Anwendung in einem Webkontext ausgeführt wird, können Sie die Tatsache verwenden, dass beim Start einer Spring - Anwendung in einem Webkontext die ApplicationContext Objekt, auf das Sie Zugriff haben, ist eine Instanz von WebApplicationContext Schnittstelle. Deshalb kannst du einfach schreiben

isWebEnvironment = (applicationContext instanceof WebApplicationContext);

Es gibt keinen Grund, das zu bekommen SpringApplication Objekt aus Ihrer Klasse, da der einzige Zweck darin besteht, ein ApplicationContext.


0 für die Antwort № 2

Wenn Sie verwenden Spring Boot Sie können dies verwenden:

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

Dadurch werden die Namen der Spring Beans abgerufen @SpringBootApplicationNachdem Sie sie erhalten haben, können Sie die Instanz einfach anhand ihres Namens erhalten.