加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 之间的关联:SpringIocContainer | ApplicationContext

发布时间:2020-12-15 00:21:33 所属栏目:Java 来源:网络整理
导读:背景 阅读后1 2 3 4 5 6链接我得出以下结论 – 作为Spring mvc设计在一个标准的servlet,并且促进servlet上下文和应用程序上下文相同的功能.在春天有两种类型的上下文ApplicationContext和WebApplicationContext- ApplicationContext由ContextLoaderListener
背景

阅读后1 2 3 4 5 6链接我得出以下结论 –

作为Spring mvc设计在一个标准的servlet,并且促进servlet上下文和应用程序上下文相同的功能.在春天有两种类型的上下文ApplicationContext和WebApplicationContext-

ApplicationContext由ContextLoaderListener初始化,每个应用程序单个instanse.
每个DispatcherServlet加载的WebApplicationContext.

我们可以在上面看到这样的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`?
 }
}

>上下文和容器似乎是我们大多数人的同义词,我想
给出一个例子.说我们有两个调度器servlet一个
休息等为mvc.

第一个调度员 –

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的实例,那些
公共部分由ContextLoaderListner加载为定义
rootContext.

我不确定,但在一个SpringApplication中不能有2个IocContainer.
> BeanFactory即SpringIocContainer是,其中所有的bean对象
生活,我们与WebApplicationContext相关联的对象是什么
Spring容器的一部分,这个容器是如何初始化的
WebApplicationContext?我想知道他们是如何做到的
相互关联?

每当我们做ctx.getBean() – 这会从spring返回对象
容器,上下文和容器之间的这种通信如何
发生?

有一个类似的answer,否认这两者都是一样的,它说

Spring comes with several container implementations,Both load bean definitions,wire beans together,and dispense beans upon request,but an ApplicationContext offers much more.

所以我的观点就是为什么两个加载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的答案,以及为什么所有的上下文都执行相同的任务.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读