使用Listener准备application作用域数据

在程序中。有些数据我们希望在程序启动的时候就准备好,而且仅仅准备一次,放在application作用域中,这时候。我们一般会用Listener来准备这些数据。

可是,用Listener准备application作用域的数据。在获取容器的时候会有一些注意事项。

public class InitListener implements ServletContextListener {


	public void contextInitialized(ServletContextEvent sce) {
		// 获取容器与相关的Service对象
		ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
		PrivilegeService privilegeService = (PrivilegeService) ac.getBean("privilegeServiceImpl");

		// 准备数据:topPrivilegeList
		List<Privilege> topPrivilegeList = privilegeService.findTopList();
		sce.getServletContext().setAttribute("topPrivilegeList", topPrivilegeList);
		System.out.println("------------> 已准备数据 <------------");
		// 准备数据:allPrivilegeUrls
				Collection<String> allPrivilegeUrls = privilegeService.getAllPrivilegeUrls();
				sce.getServletContext().setAttribute("allPrivilegeUrls", allPrivilegeUrls);
				System.out.println("------------> 已准备数据allPrivilegeUrls <------------");
	}

	public void contextDestroyed(ServletContextEvent arg0) {

	}
  1. 该Listener配置在web.xml里,默认通过反射生成实例,来得到这个对象实例来运行  
  2.  并没有从Spring容器里面获取,Tomcat没有找Spring容器,所以此处无法使用注解  
  3.   假设使用注解,会生成两个对象,一个Tomcat产生的对象,一个Spring容器注入的对象  
  4.  Tomcat会使用自己产生的对象,而Spring管理的对象没人使用 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值