Java 哪个ApplicationContext实现用于简单的spring引导应用程序?
我学到了: “应用程序上下文”的三种常用实现是−Java 哪个ApplicationContext实现用于简单的spring引导应用程序?,java,spring,spring-boot,Java,Spring,Spring Boot,我学到了: “应用程序上下文”的三种常用实现是− FileSystemXmlApplicationContext− 此容器加载定义 从XML文件中删除bean的。这里需要提供完整的路径 将XMLBean配置文件的 ClassPathXmlApplicationContext− 此容器加载定义 从XML文件中删除bean的。在这里,您不需要提供 XML文件的完整路径,但需要正确设置类路径 因为此容器将在中查找bean配置XML文件 类路径 WebXmlApplicationContext− 此容器
FileSystemXmlApplicationContext
− 此容器加载定义
从XML文件中删除bean的。这里需要提供完整的路径
将XMLBean配置文件的
ClassPathXmlApplicationContext
− 此容器加载定义
从XML文件中删除bean的。在这里,您不需要提供
XML文件的完整路径,但需要正确设置类路径
因为此容器将在中查找bean配置XML文件
类路径
WebXmlApplicationContext
− 此容器使用
web应用程序中所有bean的定义
那弹簧靴呢?我读过一些文章,如如何获取ApplicationContext:
公共类A实现ApplicationContextAware{
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
但是,在Spring Boot中究竟使用哪种应用程序上下文实现?Spring Boot应用程序的入口点是一个对象。您可以通过其方法选择要使用的实现。它的javadoc声明 设置将创建的Spring
ApplicationContext
的类型。如果
未指定默认值为WEB的DEFAULT\u SERVLET\u WEB\u CONTEXT\u CLASS
基于应用程序或非web应用程序的注释配置应用程序上下文
基于Web的应用程序
如果你不使用这种方法,它会列出
org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext
用于基于web的应用程序和
org.springframework.context.annotation.AnnotationConfigApplicationContext
适用于非基于web的应用程序
还有一个。Spring boot创建了一种新类型的
ApplicationContext
,名为WebServerApplicationContext
,它与嵌入式服务器集成。它进一步分为两个实现类别,一个用于Servlet堆栈(),另一个用于Webflux反应堆栈(ReactiveWebServerApplicationContext
)
这个新上下文的显著区别在于,它将在引导上下文期间创建和管理嵌入式服务器。因此,您可以看到此上下文将返回一个WebServer
,它具有以下接口
public interface WebServer {
void start() throws WebServerException;
void stop() throws WebServerException;
int getPort();
}
WebServer
可以是JettyWebServer
,NettyWebServer
,TomcatWebServer
,UndertowWebServer
等,这取决于类路径中找到的嵌入式服务器。这取决于类路径,例如,如果您正在创建一个web应用程序,它可能是一个
获取ApplicationContext并在其上应用getClass()方法检查它的实现情况。尝试打印
ApplicationContext的类名
?当然,我会这样做,并在确保自己没有人知道后回答我的问题