java – 之间的关联:SpringIocContainer | ApplicationContext
背景
阅读后1 2 3 4 5 6链接我得出以下结论 – 作为Spring mvc设计在一个标准的servlet,并且促进servlet上下文和应用程序上下文相同的功能.在春天有两种类型的上下文ApplicationContext和WebApplicationContext- ApplicationContext由ContextLoaderListener初始化,每个应用程序单个instanse. 我们可以在上面看到这样的ApplicationContext扩展的WebApplicationContext,所以有什么东西与ApplicationContext相关的最后这是WebApplicationContext的一部分. 疑惑 > ApplicationContextAware提供哪个上下文对象. public class SomeThing implements ApplicationContextAware{ @Override public void setApplicationContext(ApplicationContext ctx) throws BeanException{ //this context object is `ApplicationContext` or `WebApplicationContext`? } } >上下文和容器似乎是我们大多数人的同义词,我想 第一个调度员 – public class RestInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected String[] getServletMappings() { return new String[] { "/rest/*" }; } } 第二调度员 – public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected String[] getServletMappings() { return new String[] { "/mvc/*" }; } } 比这里有两个WebApplicationContext的实例,那些 我不确定,但在一个SpringApplication中不能有2个IocContainer. 每当我们做ctx.getBean() – 这会从spring返回对象 有一个类似的answer,否认这两者都是一样的,它说
所以我的观点就是为什么两个加载bean的定义,一起是一起的,这是一种返工? 即使网络应用程序是弹簧驱动的,还有一件事情,在Http通信中必须有一个标准servlet提供和使用的上下文 Spring遵循这一点,或者Spring以其他方式处理这个问题.而在spring context中,这意味着只有一个IOC容器,其中一部分由DispacherServlet加载,一部分由ContextLoaderListner加载,并且可以方便更多的诸如I18N,访问静态资源等等.. 解决方法
为你的怀疑1
在spring应用程序中有一个单独的上下文实例,它是每个DispatcherServlet的WebAplicationCntext.它可以被一个超级接口ApplicationContext- public class SomeThing implements ApplicationContextAware{ @Override public void setApplicationContext(ApplicationContext ctx) throws BeanException{ //this context object is `WebApplicationContext` which is refer by `ApplicationContext`. } } 在春天,上下文意味着只有一个IOC容器,一些部分由ContextLoaderListner加载,并且可以促进更多的诸如I18N,访问静态资源等 您以上的理解几乎是正确的.在Spring中所有的WebApplicationContext对象共享一些常见的引用,即RootContext. 这个答案不包括question2,doubt3的答案,以及为什么所有的上下文都执行相同的任务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |