方案 1
在客户端应用程序中(应用程序不是Web应用程序,例如可能是swing应用程序)
private static ApplicationContext context = new ClassPathXmlApplicationContext("test-client.xml");
context.getBean(name);
无需网络.xml。ApplicationContext 作为用于获取 Bean 服务的容器。无需 Web 服务器容器。在测试客户端中.xml可以有没有远程处理的Simple Bean,有远程处理的Bean。
结论:在方案 1 应用程序中,上下文和不相关。DispatcherServlet
方案 2
在服务器应用程序中(部署在服务器中的应用程序,例如Tomcat)。通过从客户端程序(例如Swing应用程序)远程处理访问服务
在 Web 中定义侦听器.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在服务器启动时,实例化应用程序Context中定义的bean.xml。ContextLoaderListener
假设您在 applicationContext 中定义了以下内容.xml:
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
这些 bean 是从所有四个配置文件 test1.xml test2.xml test3.xml test4.xml 实例化的。
结论:在方案 2 应用程序中,上下文和不相关。DispatcherServlet
方案 3
在具有弹簧MVC的Web应用程序中。
在网络.xml定义:
<servlet>
<servlet-name>springweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springweb</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
当Tomcat启动时,在springweb-servlet.xml中定义的bean被实例化。 延伸。在豆子实例化发生在弹簧网。在我们的例子中,springweb是FrameworkServlet。DispatcherServlet
FrameworkServlet
FrameworkServlet
结论:在方案 3 应用程序中上下文和不相关。DispatcherServlet
方案 4
在具有弹簧MVC的Web应用程序中。springweb-servlet.xml用于 servlet 和 applicationContext.xml用于访问服务器程序中的业务服务或用于访问另一个服务器程序中的 DB 服务。
在 Web.xml定义了以下内容:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springweb</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
在服务器启动时,实例化在 applicationContext 中定义的 bean.xml;假设您已在此声明:ContextLoaderListener
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
这些 bean 都是从所有四个 test1.xml test2.xml test3.xml test4.xml 实例化的。在 applicationContext 中定义的 bean 实例化完成后.xml,在 springweb-servlet.xml 中定义的 bean 将被实例化。
所以实例化顺序是:根(应用程序上下文),然后是FrameworkServlet。
现在应该清楚为什么它们在哪种情况下很重要。