使用监听器来启动spring

问题:

  数据初始化监听器要注入spring容器的对象,必须先启动spring容器才能使用监听器初始化数据。

解决:

  使用监听器来启动spring框架

问题:spring框架启动需要哪些参数?

1.需要指定配置文件或者配置类的位置

2.如果是使用注解的配置累,需要修改容器的类型

问题:监听器是不支持初始化参数的。参数如何传递到监听器里面?

答:通过设置再全局上下文参数里面,ContextLoaderListener监听器是通过获得上下文参数来解决这个问题的

<context-param>
      <param-name>contextConfigLocation</param-name> //注意这里对应的spring前端控制器的<param-value>不用写
      <param-value>org.chu.config</param-value>
    </context-param>
    <context-param>
       <param-name>contextClass</param-name>
       <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
    </context-param>
    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

自定义数据初始化监听器

public class DataInitializeListener implements ServletContextListener  {

    //问题:Spring的依赖注入只能在Spring容器中的对象使用。而监听器不是Spring容器的对象。
    //解决方法:在非容器里的对象获得容器里面的对象,容器对象.getBean();

    /**
     * 上下文初始化的时候调用的方法
     */
    @Override
    public void contextInitialized(ServletContextEvent sce) {

     System.out.println("==启动啦==");
     ServletContext context = sce.getServletContext();
     //ApplicationContext
     WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(context);
     RoleService roleService = applicationContext.getBean(RoleService.class);
     DictionaryService dictionaryService = applicationContext.getBean(DictionaryService.class);
     ModularService modularService=applicationContext.getBean(ModularService.class);
     PermissionService permissionService=applicationContext.getBean(PermissionService.class);
     UserService userService = applicationContext.getBean(UserService.class);
     AreaService areaService = applicationContext.getBean(AreaService.class);
     CustomerSerivce customerSerivce = applicationContext.getBean(CustomerSerivce.class);

    }

    /**
     * 上下文销毁的时候调用的方法
     */
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("==关闭了==");
        ServletContext context = sce.getServletContext();
        context.removeAttribute("global_roles");
        context.removeAttribute("global_dictionarys");

    }

}

原文地址:https://www.cnblogs.com/vieta/p/11142219.html

时间: 2024-10-28 17:34:16

使用监听器来启动spring的相关文章

监听器如何获取Spring配置文件(加载生成Spring容器)

Spring容器是生成Bean的工厂,我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个监听器,在项目启动时将首页的数据查询出来放到application里,即在监听器里调用后台商品业务逻辑的方法,也就是说我们需要在监听器里获取Spring中配置的相应的bean.先把监听器创建出来: 1. 创建InitDataListener 创建一个监听器InitDataListener继承Serv

web.xml/servlet监听器之引入spring

spring在ServletContext加载的时候就生效了,通过Listener来引入的 <listener>  <listener-class>   org.springframework.web.context.ContextLoaderListener  </listener-class> </listener> ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它

监听器如何获取Spring配置文件

我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个监听器,在项目启动时将首页的数据查询出来放到application里,即在监听器里调用后台商品业务逻辑的方法,也就是说我们需要在监听器里获取Spring中配置的相应的bean.先把监听器创建出来: 1. 创建InitDataListener 创建一个监听器InitDataListener继承ServletContextListener:

在Listener(监听器)定时启动的TimerTask(定时任务)中使用[email&#160;protected]注解的bean

1.有时候在项目中需要定时启动某个任务,对于这个需求,基于JavaEE规范,我们可以使用Listener与TimerTask来实现,代码如下: public class TestTaskListener implements ServletContextListener { //Context()初始化方法 @Override public void contextInitialized(ServletContextEvent sce) { //新建一个定时管理器 new TestTimerMa

8 -- 深入使用Spring -- 7...1 启动Spring 容器

8.7.1 启动Spring容器 对于使用Spring的Web应用,无须手动创建Spring容器,而是通过配置文件声明式地创建Spring容器.因此,在Web应用中创建Spring容器有如下两种方式: ⊙ 直接在web.xml文件中配置创建Spring容器 ⊙ 利用第三方MVC框架的扩展点,创建Spring容器.

Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)

启动监听器无法打开,报错! 1 [[email protected] ~]$ lsnrctl start 2 3 LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 06-AUG-2014 19:40:52 4 5 Copyright (c) 1991, 2009, Oracle. All rights reserved. 6 7 Starting /opt/oracle/11g/bin/tnslsnr: please wait... 8

Oracle 监听器无法启动(TNS-12537,TNS-12560,TNS-00507)

Oracle启动监听报错,提示 连接中断 [[email protected] ~]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 06-AUG-2014 20:02:16 Copyright (c) 1991, 2009, Oracle. All rights reserved. Starting /opt/oracle/11g/bin/tnslsnr: please wait... TNS-12537

.嵌入式jetty启动spring(java配置方式),junit测试用.标准spring 配置(java config) 嵌入式jetty9启动

package com.doctor.embeddedjetty; import java.util.concurrent.TimeUnit; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.springframework.web.con

web服务启动spring自己主动运行ApplicationListener的使用方法

我们知道.一般来说一个项目启动时须要载入或者运行一些特殊的任务来初始化系统.通常的做法就是用servlet去初始化.可是servlet在使用spring bean时不能直接注入,还须要在web.xml配置.比較麻烦.今天介绍一下使用spring启动初始化的方法.事实上非常easy,仅仅需两步就能够了. 实现ApplicationListener接口: public class Init implements ApplicationListener<ContextRefreshedEvent>{