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表达式直接使用。
适合场景:比如网站中下拉列表中的数据,一般不会改变,加载页面时又需要用到,使用数据字典非常方便。