模型

大致介绍一下:左侧菜单是用户登录成功之后显示的页面  这些数据就是通过查询数据库 然后在页面中把查到的数据  循环遍历出来   构成了操作菜单

第一个解决的问题:常用数据  在服务器启动的时候  查询一次  保存在application作用域中  所有用户共享   减少查询次数

所以配置监听器:

服务器启动的时候 需要加载这个类 调用初始化方法  所以web.xml中配置监听代码     在监听器也是有执行顺序的  配置在前面的先执行  因为在初始化代码中需要调用spring容器中

创建的PrivilegeService对象  所以监听代码需要放在spring监听代码之后

第二个问题: 初始化方法中能够实现serivce的注入吗

这里配置了好监听器之后  服务器启动的时候 就是通过提供的包.类名称  以反射的方式 创建监听的类的实例(通过反射new出来的对象)  并且执行初始化方法(因为配置的这个监听器就是监听application的创建)  这是正确的

但是执行初始化方法 使用的是通过反射new出来的对象  不是容器生成出的对象  当然也不存在于进容器中  那么怎么可以注入容器中的其他对象呢(service)

如果这样 使用注解  让容器创建该类对象  那么的确可以创建成功  并且注入容器中的其他对象

但是这个对象tomcat在启动的时候  会使用吗  会执行初始化操作吗  首先这里应该明白  此时服务器启动的时候  已经创建了2个监听类对象  一个是通过反射方式  一个是通过spring容器生成  但是执行初始化操作的时候

使用的是web.xml中配置之后 通过 反射创建的实例  所以这个对象类中 不能以注入的方式得到service对象 并且使用它

解决办法,得到容器对象  以getBean的方式得到需要使用的service对象

启动服务器 可以看到查询数据的信息  说明我们需要的数据现在已经保存进了application中

然后  我们登录  看看是否可以成功看到我们需要的数据

出现nosession异常  这个异常已经非常常见了  懒加载异常  但是疑问的是 我们已经在web.xml中已经配置了延迟关闭session的过滤器

这就是第三个需要说明的问题:

首先 第一点:服务器启动的时候(不是请求的过程中  不会经过过滤器) 把数据检索了出来  因为懒加载机制  所以此时懒加载属性 没有加载 (关联属性没有加载)

第二点:即使经过了过滤器  也不能解决懒加载异常  因为该异常的解决前提是  必须是同一次请求(用户访问->----页面显示数据 session关闭)     在同一次请求之内的懒加载异常 用延迟过滤器解决

所以这里就需要在配置文件中把lazy的属性设置为false

刷新

配置监听器 服务器启动时 检索常用数据 保存在application中 减少数据的查询操作(OA项目)的更多相关文章

  1. spring项目中监听器作用-ContextLoaderListener(项目启动时,加载一些东西到缓存中)

    作用:在启动Web容器时,自动装配Spring applicationContext.xml的配置信息. 因为它实现了ServletContextListener这个接口,在web.xml配置这个监听 ...

  2. Spring Web项目spring配置文件随服务器启动时自动加载

    前言:其实配置文件不随服务器启动时加载也是可以的,但是这样操作的话,每次获取相应对象,就会去读取一次配置文件,从而降低程序的效率,而Spring中已经为我们提供了监听器,可监听服务器是否启动,然后在启 ...

  3. apache服务器启动时提示httpd: apr_sockaddr_info_get() failed for

    apache服务器启动时提示httpd: apr_sockaddr_info_get() failed for 在RedHat Linux 5 与 CentOS 5服务器上配置好apache后,启动或 ...

  4. java中服务器启动时,执行定时任务

    package com.ripsoft.util; import java.util.Calendar; import java.util.Timer; import javax.servlet.Se ...

  5. Servlet的init()方法如何才会在服务器启动时执行

    如果要想让 servlet 的 init () 方法在服务器启动 时就被执行,则需要在 web.xml 中相应的 servlet 下配置 <servlet > <servlet -n ...

  6. [转帖]postgresql 在等待服务器启动时超时

    postgresql 在等待服务器启动时超时 2018年12月24日 :: my_name_nb 阅读数 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接 ...

  7. 1.scrapy爬取的数据保存到es中

    先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index.     from datetime import datetime fr ...

  8. 服务器启动时Webapp的web.xml中配置的加载顺序

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  9. 服务器启动时Webapp的web.xml中配置的加载顺序(转载)

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

随机推荐

  1. SPOJ 10628 Count on a tree (lca+主席树)

    题意:给定一棵有n个结点的树,每一个点有一个权值.共同拥有m个询问.对于每一个询问(u,v,k),回答结点u至v之间第k小的点的权值. 思路:主席树+lca.首先指定一个根结点dfs一次并在此过程中建 ...

  2. iOS开发-自己定义重用机制给ScrollerView加入子视图

    事实上这个问题我非常早就想过,仅仅是没有通过去写程序实现,昨天有人提起,我就巧了一下 不知道大家打印郭tableview:cellforrow中cell初始的次数,也就是重用池中的cell个数.这个是 ...

  3. 时序图与状态图(Rose) - Windows XP经典软件系列

    以CAN转UART(串口)为例. 功能简单介绍: 当主程序收到CAN口的数据后:依据按键的不同来选择是使用CAN口发送,还是使用UART口发送. 一.图片 时序图 watermark/2/text/a ...

  4. UML的基本图(二)

     Both sequence diagrams and communication diagrams are kinds of interaction diagrams. An interacti ...

  5. 0x58 数据结构优化DP

    补写一下 poj3171 设f[i]表示覆盖L~i的最小花费,把区间按左端点排序,枚举区间,f[a[i].r]=min{f[a[i].l~(a[top].r-1)]}+a[i].c (当然还要和原值比 ...

  6. php 0,null,empty,空,false,字符串关系(转)

    在php中由于是弱类型语言,不同类型值之间可以隐式转换,使得false,null,”,0,’0′这几个值的比较有些混乱,现总结一下: //相等判断 '' == NULL == 0 == false ( ...

  7. Redis(二)、Redis持久化RDB和AOF

    一.Redis两种持久化方式 对Redis而言,其数据是保存在内存中的,一旦机器宕机,内存中的数据会丢失,因此需要将数据异步持久化到硬盘中保存.这样,即使机器宕机,数据能从硬盘中恢复. 常见的数据持久 ...

  8. Three.js入门——画星空(star field)

    Three.js是一个很流行的3D JavaScript库.这里有一个three.js的入门教程,在浏览器窗口中画出星空.我按照教程重新实现了一遍,这里的这篇博客把教程大致翻译了一遍.我的demo. ...

  9. 【华科考研机试题】最长&最短文本

    题目 输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出. 解题思路 1.输入所有字符串(有空格不另算字符串). 2.将char*字符串转换成s ...

  10. Activity创建时布局文件的实现原理

    setContenView(R.id.activity)实现原理 1.底层框架根据布局ID找到布局文件. 2.底层框架解析此布局文件(pull解析). 3.底层框架通过反射构建布局文件中的元素对象(E ...