java 爬坑记-@WebServlet异步 不支持@Autowired
上篇文章解决了500那个错误, 程序能接受到request ,进行到调用service 服务时,提示线程空指针异常, 检查发现
//@Autowired
//OpHistoryService ophistoryservice; 类似这个 没注入成功,当然调用时 是个null ,空指针了...
有人介绍说
、 Spring不能通过注解向Servlet中注入实例的原理 想了解此问题的原理,就要了解tomcat启动后 servlet和spring的加载顺讯。 、 tomcat启动后先加载web.xml文件。web.xml主要配置了servlet 、filter、listenner三种javaee规范的类,加载顺序跟在web.xml文档 中的位置无关。 顺序为 listenner>filter>servlet 。 、而spring的初始化类为org.springframework.web.context.ContextLoaderListener,就是一个listenner,它是先于servlet加载的。普通servlet和springmvc的入口servlet 的加载顺序,就要看servle的设置了。
、在 servlet A类上加@service或@controllert等注解时,spring或springmvc会扫面相关包,自动实例化一个servlet 实例A;这个实例A的引用是spring容器管理的。
、当然 servlet也会在web.xml配置(要不然怎么拦截url),这是tomcat容器会根据servler配置启动时或者第一次请求该url时实例化该servlet 实例B,
这个实例B的引用是tomcat容器管理的。
、明白了吧,拦截url的servlet和spring依赖注入的servlet不是同一个实例!!所以就产生了不能依赖注入或者注解不起作用的现象。
---------------------
作者:享受编程_
来源:CSDN
原文:https://blog.csdn.net/u013476542/article/details/57084825
版权声明:本文为博主原创文章,转载请附上博文链接!
文章二
如果servlet中需要用到spring中的applicationContext,我们是没法直接通过@Autowired方式获取的,需要用如下方式:
WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); running = context.getBean("running");
为什么呢?
在tomcat中,一个url请求进来到处理,经过这些步骤:tomcat 启动,tomcat comtxt加载(在这儿是spring comtext加载,因为spring的comtext实现了tomcat中容器接口),filters,servletcontext启动。。。在这儿servlet和applicationContext是两个平级的概念。所以servlet只能够通过tomcat中的api来获取applicationContext对象。
还好spring留着程序员取bean 的接口,直接拿过来用吧....
java 爬坑记-@WebServlet异步 不支持@Autowired的更多相关文章
- mint-ui之picker爬坑记
picker的数据来源为动态获取时,数据无法正常渲染!因为方法不对,所以坑大了!深刻地体会到'业不精,我之过',谨以此文,深刻地记录一下踩坑及爬坑的整个过程,以便日后不再入坑,也给后来者提供一下参考 ...
- .NET Core爬坑记 1.0 项目文件
前言: 之所以要写这个系列是因为在移植项目到ASP.NET Core平台的过程中,遇到了一些“新变化”,这些变化有编译方面的.有API方面的,今天要讲的是编译方面的一些问题.我把它们整理后分享出来,以 ...
- mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)
题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去.之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了. 话 ...
- maven项目新检出后不编译爬坑记 及 mvn clean package报错 WagonTransporterFactory: java.util.NoSuchElementException 异常【我】
从SVN新检出一个maven项目,配置好后,发现项目无法编译(只有一个test包中的代码显示编译报错,其他所有包中的代码都不编译,也不报错), 先注释掉报错的test包中的所有内容, 用Eclipse ...
- java踩坑记
1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 ==,但用equals就真的安全了吗,看下面的代码 user.getName().equals("xiaoming ...
- 【MyBatis】MyBatis自动生成代码查询之爬坑记
前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示 ...
- python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...
- Java踩坑记系列之Arrays.AsList
java.util.Arrays的asList方法可以方便的将数组转化为集合,我们平时开发在初始化ArrayList时使用的比较多,可以简化代码,但这个静态方法asList()有几个坑需要注意: 一. ...
- dotNet程序员的Java爬坑之旅(二)
囉里囉唆的寫了一大堆,最後還是全刪除了.哎~ 言歸正傳,最近因爲發生了很多事情,所以更新的有嗲晚了,最近也一直在學習,但是感覺效率什麽的不是很高,這是不對的,反思一下,從這篇博文開始,打起精神吧. M ...
随机推荐
- rest_framework目录
一 REST API规范 二 rest framework框架的基本使用
- python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)
文件上传操作 一.文件上传分两种情况:1. 如果是input可以直接输入路径的,可以直接调send_keys输入路径 2. 非input标签的上传,需要借助第三方工具: 2.1 Autolt 需 ...
- HTML基础篇
由于一些原因,要换工作了,毫无准备,心情郁闷了几天.但是还是更新了简历,准备复习面试.面 了3天.面试中问到了一些问题,想好好整理一下.越是大公司越看重基础.这几天遇到的面试题,有15到简答题,有两页 ...
- 调试dump文件
1.设置好pdb文件和源代码路径 为了能正确分析Dump文件,我们必须要指定和程序一起出来的PDB文件,如果程序重新被编译了一次,即使代码没有任何变化,之前的PDB文件我们不能再继续使用.
- java Page分页显示
//entity层实体类 import java.util.List; //分页展示 //相关属性:当前页,页大小(每页显示的条数),总页数,总条数,数据 //select * from t_user ...
- 【学习】数据规整化:清理、转换、合并、重塑(续)【pandas】
@合并重叠数据 还有一种数据组合问题不能用简单的合并或连接运算来处理.比如说,你可能有索引全部或部分重叠的两个数据集 使用numpy的where函数,它用于表达一种矢量化的if - else a = ...
- LeetCode 141. Linked List Cycle 判断链表是否有环 C++/Java
Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked lis ...
- jersey 用FastJson替换掉默认的Jackson
@Bean public ResourceConfig resourceConfig() { ResourceConfig resourceConfig = new ResourceConfig(); ...
- HTML5 关于本地操作文件的方法
由于传统 b/s 开发出于安全性的考虑,浏览器对于本地文件的操作权限几乎没有,用户想要操作一个文件基本都是采用先上传到服务器, 再回显给浏览器供用户编辑,裁剪等的方法,这种方式虽然可行,但其对于服务器 ...
- ---- 关于Android蓝牙搜索到设备的图标显示和设备过滤
根据: https://www.douban.com/note/637446089/http://bbs.16rd.com/blog-23795-3446.html 以下摘自原文: (Android主 ...