问题:

  数据初始化监听器要注入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"); } }

使用监听器来启动spring -------使用监听器初始化上下文参数的更多相关文章

  1. 在Listener(监听器)定时启动的TimerTask(定时任务)中使用Spring@Service注解的bean

    1.有时候在项目中需要定时启动某个任务,对于这个需求,基于JavaEE规范,我们可以使用Listener与TimerTask来实现,代码如下: public class TestTaskListene ...

  2. 配置spring的监听器 让spring随项目的启动而启动

    <!-- 配置spring的监听器 让spring随项目的启动而启动 --> <listener> <listener-class>org.springframew ...

  3. 配置Spring的用于初始化容器对象的监听器

    <!-- 配置Spring的用于初始化容器对象的监听器 --> <listener> <listener-class>org.springframework.web ...

  4. 48、[源码]-Spring容器创建-初始化事件派发器、监听器等

    48.[源码]-Spring容器创建-初始化事件派发器.监听器等 8.initApplicationEventMulticaster();初始化事件派发器: 获取BeanFactory 从BeanFa ...

  5. spring listener监听器

    1.Listener的定义与作用 监听器Listener就是在application,session,request三个对象创建.销毁或者往其中添加修改删除属性时自动执行代码的功能组件. Listen ...

  6. 使用spring的监听器来完成系统超级管理员的注册

    1.注入 2“util类 package com.liveyc.mgrsite.util; import org.springframework.beans.factory.annotation.Au ...

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

    我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个监听器,在项目启动时将首页的数据查询出 ...

  8. Spring MVC源码(一) ----- 启动过程与组件初始化

    SpringMVC作为MVC框架近年来被广泛地使用,其与Mybatis和Spring的组合,也成为许多公司开发web的套装.SpringMVC继承了Spring的优点,对业务代码的非侵入性,配置的便捷 ...

  9. Spring的监听器ContextLoaderListener

    一.作用 ContextLoaderListener监听器的作用就是启动web容器时,自动装配ApplicationContext的配置信息.它实现了ServletContextListener接口, ...

随机推荐

  1. 团队作业4:第七篇Scrum冲刺博客(歪瑞古德小队)

    目录 一.Daily Scrum Meeting 1.1 会议照片 1.2 项目进展 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3.2 Code Review 记录 3.3 issue ...

  2. 第3篇scrum冲刺(5.23)

    一.站立会议 1.照片 2.工作安排 成员 昨天已完成的工作 今天的工作安排 困难 陈芝敏  调用小程序接口获取用户微信登录权限,初始化  完成云开发配置,初始化数据库: 进度较慢,后面可能会有点困难 ...

  3. 开启gzip压缩/cdn是否会影响抓取和收录量

    http://www.wocaoseo.com/thread-291-1-1.html 服务器开启gzip压缩是否会影响蜘蛛抓取和收录量?站点开了CDN,对百度SEO影响有多大?我发现我们站自从开了C ...

  4. 每天定时下载gfs资料shell脚本

    在数值天气预报应用中,经常需要下载一些输入资料,美国ncep的gfs资料是常用的一种分析场资料.业务运行,需要每天定时从ncep网站上下载,所以写了一个Shell脚本实现这一功能.脚本内容如下: #! ...

  5. 一篇文章高效定位iframe

    今天跟大家分享的是如何高效的定位iframe.我们来看一段最早的代码: # coding: utf-8from selenium import webdriverfrom time import sl ...

  6. 洛谷P1080 国王游戏 python解法 - 高精 贪心 排序

    洛谷的题目实在是裹脚布 还编的像童话 这题要 "使得获得奖赏最多的大臣,所获奖赏尽可能的少." 看了半天都觉得不像人话 总算理解后 简单说题目的意思就是 根据既定的运算规则 如何排 ...

  7. Ubuntu安装Windows官方版QQ和微信(使用deepin wine)

  8. dlopen代码详解——从ELF格式到mmap

    最近一个月的时间大部分在研究glibc中dlopen的代码,基本上对整个流程建立了一个基本的了解.由于网上相关资料比较少,走了不少弯路,故在此记录一二,希望后人能够站在我这个矮子的肩上做出精彩的成果. ...

  9. 使用intellij IDEA远程连接服务器部署项目

    由于不想每次打开上传的文件软件,故研究使用intellij IDEA集成 ,下面是我使用的过程的一些记录. 使用intellij 远程连接服务器连接Linux服务器部署项目,方便我们开发测试. 本人使 ...

  10. 2020重新出发,NOSQL,什么是Redis?

    @ 目录 Redis是什么? NoSQL和传统数据库的区别 Redis的优点 Redis在Java Web中的应用 缓存 高速读/写场合 Redis是什么? Redis 是一个由 Salvatore ...