使用监听器来启动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");
}
}
使用监听器来启动spring -------使用监听器初始化上下文参数的更多相关文章
- 在Listener(监听器)定时启动的TimerTask(定时任务)中使用Spring@Service注解的bean
1.有时候在项目中需要定时启动某个任务,对于这个需求,基于JavaEE规范,我们可以使用Listener与TimerTask来实现,代码如下: public class TestTaskListene ...
- 配置spring的监听器 让spring随项目的启动而启动
<!-- 配置spring的监听器 让spring随项目的启动而启动 --> <listener> <listener-class>org.springframew ...
- 配置Spring的用于初始化容器对象的监听器
<!-- 配置Spring的用于初始化容器对象的监听器 --> <listener> <listener-class>org.springframework.web ...
- 48、[源码]-Spring容器创建-初始化事件派发器、监听器等
48.[源码]-Spring容器创建-初始化事件派发器.监听器等 8.initApplicationEventMulticaster();初始化事件派发器: 获取BeanFactory 从BeanFa ...
- spring listener监听器
1.Listener的定义与作用 监听器Listener就是在application,session,request三个对象创建.销毁或者往其中添加修改删除属性时自动执行代码的功能组件. Listen ...
- 使用spring的监听器来完成系统超级管理员的注册
1.注入 2“util类 package com.liveyc.mgrsite.util; import org.springframework.beans.factory.annotation.Au ...
- 监听器如何获取Spring配置文件
我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个监听器,在项目启动时将首页的数据查询出 ...
- Spring MVC源码(一) ----- 启动过程与组件初始化
SpringMVC作为MVC框架近年来被广泛地使用,其与Mybatis和Spring的组合,也成为许多公司开发web的套装.SpringMVC继承了Spring的优点,对业务代码的非侵入性,配置的便捷 ...
- Spring的监听器ContextLoaderListener
一.作用 ContextLoaderListener监听器的作用就是启动web容器时,自动装配ApplicationContext的配置信息.它实现了ServletContextListener接口, ...
随机推荐
- A neural reinforcement learning model for tasks with unknown time delays
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 我们提出了一个基于生物学的神经模型,能够在复杂的任务中执行强化学习.该模型的独特之处在于,它能够在一个动作.状态转换和奖 ...
- neighbor和neigh_modify(转载)
(转载:http://blog.sina.com.cn/s/blog_b48a7ac30102w4mg.html###) 以下取自:http://simulation.haotui.com/viewt ...
- Java通过反射加载的类,变量无法注入
//之前都是直接newInstance的到obj,类中的变量无法被注入//Object obj = aClass.newInstance(); //改成如下方式的到bean,变量就能顺利被注入 ,其他 ...
- SEO外包好还是自己组建团队
http://www.wocaoseo.com/thread-151-1-1.html 营络营销已成为企业不可忽视的一块大肥肉,很多企业都想进来分一杯羹,但是不少企业苦于缺少过硬的技术,无 ...
- JavaScript中pipe实战
JavaScript中pipe原理 代码示例 const pipe = (...fns) => x => fns.reduce((y, f) => f(y), x); 原理 一行代码 ...
- springBoot整合spring security+JWT实现单点登录与权限管理--筑基中期
写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...
- Myabtis动态SQL,你真的会了吗?
目录 前言 什么是动态SQL? 常用的标签 if choose.when.otherwise where foreach set sql include 总结 拓展一下 Mybatis中如何避免魔数? ...
- 20190919-02安装Xshell和CRT远程工具 000 008
Linux远程登录及相关工具介绍 Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器.这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中 ...
- Readme for Software engineering
作业任务: 软件工程 软件工程 作业要求 作业要求 作业目标 博客园.github注册 自我介绍 软工5问 自我介绍: 广东工业大学计算机学院18级信息安全二班 广东工业大学AD攻防工作室成员& ...
- warning: #1295-D: Deprecated declaration LED_Init - give arg types警告的解决办法