记录项目中 监听器+单例+定时器 的使用

项目中界面左侧树形结构节点动态获取,为减轻数据库压力,采用单例模式。创建单例类用Map存放节点信息,用户点击先从Map取,无则连数据库。同时在web.xml定义监听器,设置定时任务清空Map,还可为管理员提供手动清空按钮。

项目中 界面上左侧为一棵数型结构,而每个节点都是动态获取的,

即树的子节点可能会更改(但是可能很久都不会更改)。

因此这个时候我们需要考虑是否每次点击节点都实时从数据库获取子节点?

答案当然是否定的。因为这个树结构是可能长期不变更的,难道每个用户请求一次我们都去访问数据库吗?

这样会给数据库造成一定的压力

因此博主这里用到了如题所言的方式去实现此业务场景

因此这里考虑到用单例模式

 

做法

1.创建一个单例类,类里面有个成员变量Map<String,String[]>  用来存放该节点的ID 已经子节点数组

2.用户第一次点击树节点的时候 把节点放在单例类的map里面拿,下次点击则从map里取,有则取无则连数据库拿

3.这样其他用户点击同一个树拿子节点便可以不用访问数据库

4.基本做法就是以上,但是我们需要考虑到一个树结构会变更的问题

5基于以上问题,我们可以在web.xml里面定义一个监听器,监听tomcat的启动,启动的时候设置一个定时任务

6.定时任务里面 定时对map清空

7.可以给管理员提供一个按钮,树结构变更,管理员可以去手动点击按钮清空map

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值