问题:
数据初始化监听器要注入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