bean创建中的Spring contextloaderlistener角色

时间:2015-04-16 03:23:56

标签: java spring

我查看了Contextloaderlistener和应用程序上下文的一些文档,并根据我的理解,Application Context是由ContextLoaderListener初始化的容器,并加载所有spring配置文件。我不清楚的是哪一个负责基于提供的元数据创建bean。是ContextLoaderListener还是应用程序上下文。

2 个答案:

答案 0 :(得分:3)

  • Spring中 ApplicationContext 背后的想法是有序的 在需要的地方正确地注入物品,有些事情需要 了解用户指定和注入的配置 基于此配置的依赖项。
  • ApplicationContext 是了解用户的事情 希望注入的地点和内容(以及 其他的东西,如AOP切入点等)基于 用户提供的配置,通过xml文件或 注释
  • 以servlet命名的上下文([servlet-name] -context.xml) 是 WebApplicationContext ,是主要的子上下文 ApplicationContext ,它是根据contextConfigLocation中列出的文件创建的,并由ContextLoaderListener加载。该 child可以访问父级中定义的任何bean,但父级具有 无权访问孩子中定义的bean
  • ContextLoaderListener 是一个ServletListener。因此,在JSP / Servlet规范中,当特定的时候,容器会调用Servlet侦听器 事件发生。在这种情况下,它会在完成后立即调用 为Web应用程序创建ServletContext。当它得到 在ContextLoaderListener中调用它将创建/实例化
    ApplicationContext 并加载您使用
    设置的xml文件 context-param名称和值标签。
  • contextConfigLocation参数与此结合使用 Spring监听器org.springframework.web.context.ContextLoaderListener
  • ContextLoaderListener执行侦听器的引导程序 启动Spring的根WebApplicationContext
  • ContextLoaderListener是一个启动Spring容器的类。 基本上每个Spring应用程序都包含几个bean和 接线(哪些bean相互依赖的声明性描述)。 这个描述历史上用XML编写(现在我们有了 注释,Java配置,CLASSPATH扫描等。)
  • ContextLoaderListener读取该文件,找到您的类, 实例化它们和电线。然后将所有豆子放入一个 容器

答案 1 :(得分:1)

ApplicationContext使用BeanFactory创建bean,这是将xml / annotations转换为类并管理每个类的生命周期的实际组件。

当spring在另一个容器(例如像tomcat之类的servlet引擎)中运行时,使用ContextLoaderListener来检测应用程序的启动并初始化ApplicationContext。当spring在另一个上下文中使用时 - 例如java程序通过main方法运行 - 应用程序可以直接创建AppContext而不需要像这样的ContextLoaderListener:

public class Main {
    public static void main(String[] args) throws Exception {
       ApplicationContext ctx = new ClassPathXmlApplicationContext(
    "context.xml");
    Foo foo = (Foo) ctx.getBean("fooBean");
    foo.doSomethingCool();

} }