Spring中自定义监听器——实现数据字典

Spring中自定义监听器——实现数据字典

一、JavaWeb中监听器类型

  JavaWeb中共有三种监听器,分别是ServletContextListener,HttpSessionListener,ServletRequestListener;他们分别对应的作用域是Application、Session、Request,实现各自类型的接口即可实现监听器的创建。

二、使用方式(ServletContextLisenter为例)

package cn.krain.crm.web.listener;

/**
 * @author CC
 * @data 2020/8/1 - 22:28
 */
public class SysInitLisenter implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("-------------------start initServlet------------------");
		//...
        System.out.println("-------------------end initServlet-----------------");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}

  可在contextInitialized和contextDestroyed方法中根据所要实现功能进行代码编写。

  • web.xml
<listener>
    <listener-class>监听器的类路径</listener-class>
</listener>

三、注意事项

  由于在SSM项目中使用Spring注解的方式创建对象,并且监听器在web.xml中最先被执行,因此在监听器方法执行时,无法进行bean的自动注入;可使用如下方法:

ApplicationContext context =
                WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
//获取bean
typeDao =  context.getBean(DicTypeDao.class);
valueDao = context.getBean(DicValueDao.class);

  不使用getBean方法为所使用的的对象赋值时会报空指针异常,因为没有创建,对象无法正常使用,从而服务器无法正常启动(这个bug我改了一天,吐了);总结一下,希望能够帮到大家。

四、实现数据字典

  通过Application监听器可以实现数据字典。

  数据字典概念:即对于在数据库中不经常改变的数据,可以放入到application域中,直接使用,不用再从数据库中获取。

  服务器启动,执行监听器方法,通过使用对应数据的Dao层对象获取数据并放入到application域中,在页面上通过JSTL配合EL表达式直接使用。

  适合场景:比如网站中下拉列表中的数据,一般不会改变,加载页面时又需要用到,使用数据字典非常方便。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

krain.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值