欲哭无泪的@Autowired注入对象为NULL
欲哭无泪啊...一下午的时间就这么被浪费了...一个基于spring mvc和spring data jpa的小项目,当我写完一个controller的测试用例后,一运行却报空指针,跟了下是一个dao为null.然后看一下这个dao的代码:
@Component
@Transactional
public class XXService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired
private XXDao xxDao; public void add(XX xxl) {
logger.debug("进入XXService.add(XX xx)方法");
xxDao.save(xx); //此处报空指针,原因是xxDao为null
}
一开始我都没认为这个xxDao会是null,以为是参数有问题,然而断点跟了一下发现不仅参数没问题,程序整体过程中都没有任何不对劲的地方,只有运行到这个dao才报错..因为这个dao是jpa自动实现的,我就想当然的认为可能是参数或是映射问题导致的生成实现的过程中出现问题,不过现在想想,虽然自动实现dao的过程可能失败,但是不应该报空指针.百度了一圈,看到个关于@Autowired注入失败的帖子,此时才想到可能是dao注入失败了,再跟一遍代码,的确这里dao没有注入jpa生成的实现,直接就是个null.这我就有点无解了,别又是spring的什么bug或是jar包冲突,这还怎么玩?当年学spring的时候就遇到过各种奇葩问题,写错的代码却得到正确结果,写对的代码却因为各种原因一直报错..
虽然有点无解,但是原帖中有人提过要在所有使用dao的地方包括service都需要@Autowired注入,否则就会失效,那么我检查一下吧,虽然不报希望,因为这段代码是我们leader写了一半的时候我接着写的,犯错的概率很小的.话虽这么说,但是看到了如下这段代码:
@RestController
@RequestMapping(value = "/xxx/xx")
public class XXController { Logger logger = LoggerFactory.getLogger(getClass()); private XXService xxService = new XXService();
..... }
我当时就倒了...这里忘了注入也就算了,然而还直接new了一个对象,这样调用service的时候也不报错...然后dao层注入直接失败..
这里印证了之前看到的那个帖子中的观点:必须在所有使用了dao的地方,包括调用它的servcie都要进行@Autowired注入,否则之后的注入就会失败..
欲哭无泪的@Autowired注入对象为NULL的更多相关文章
- 在Springmvc普通类@Autowired注入request为null解决方法
在Springmvc普通类@Autowired注入request为null解决方法 在类中加入以下注入request对象的代码,运行时发现request为null,注入失败.在@Controlle ...
- Spring中注入对象为NULL
Java工程报错, java.lang.reflect.InvocationTargetException,网上搜索过后,发现是注入错误,通过调试发现,具体报错位置是某个dao层对象为null,进而引 ...
- intellij idea中去除@Autowired注入对象的红色波浪线提示
idea中通过@Autowired注入的对象一直有下划线提示. 解决:改变@Autowired的检查级别即可. 快捷键:Ctrl+Alt+s,进入idea设置界面,输入inspections检索
- intellij idea中去除@Autowired注入对象带来的下划线提示
场景: idea中通过@Autowired注入的对象一直有下划线提示,虽然不影响运行 解决:改变@Autowired的检查级别即可. 快捷键:Ctrl+Alt+s,进入idea设置界面,输入inspe ...
- spring @Autowired注入对象,在构造方法中为null问题
出现问题的代码如下: @Service public class BaseHttpServiceImpl implements BaseHttpClient { private final stati ...
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
最近使用SpringBoot的自定义拦截器,在拦截器中注入了一个DAO,准备下面作相应操作,拦截器代码: public class TokenInterceptor implements Handle ...
- Spring Autowired 注入失败总是Null
报错:NullPointerException 分析:错误原因是注入失败? <context:annotation-config/> <context:component-scan ...
- new出来的对象无法调用@Autowired注入的Spring Bean
@Autowired注入Spring Bean,则当前类必须也是Spring Bean才能调用它,不能用new xxx()来获得对象,这种方式获得的对象无法调用@Autowired注入的Bean. 1 ...
- Java 各级注解及@Autowired注入为null解决办法
1.@controller 控制器 用于标注控制层,相当于struts中的action层. 2.@service 服务层 用于标注服务层,主要用来进行业务的逻辑处理. 3.@repository DA ...
随机推荐
- C# RSA 分段加解密
RSA加解密: 1024位的证书,加密时最大支持117个字节,解密时为128:2048位的证书,加密时最大支持245个字节,解密时为256. 加密时支持的最大字节数:证书位数/8 -11(比如:204 ...
- GJM :用JIRA管理你的项目(二)JIRA语言包支持及插件支持 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 国际化支持(I18N)
本章译者:@nixil 使用国际化支持(I18N)能够使你的应用根据用户所在地区的不同选择不同的语言.下面介绍如何在引用中使用国际化. 只允许使用UTF-8 Play只支持UTF-8一种字符编码.这是 ...
- NProgress.js template
NProgress.js:加载进度条:http://ricostacruz.com/nprogress/ 基础的这几个方法 这个网站上都有 我在一个地方看到这个代码 NProgress.configu ...
- 刀锋上前行!绕过Ramint蠕虫病毒直接脱壳
系统 : Windows xp 程序 : 某游戏客户端 程序下载地址 :不提供 要求 : 脱去压缩壳 使用工具 : OD & PEID & LordPE & Import RE ...
- Office 365 - SharePoint 2013 Online 中使用Windows PowerShell
1.如果想要在SharePoint Online中使用Windows PowerShell,首先需要安装SharePoint Online Management Shell(下载地址附后),如下图: ...
- Autodesk hackathon 技术参考资料
Autodesk 首届黑客马拉松(hackathon )将于6月14号在上海举行,在这次活动中,推荐您使用的技术有ReCap 360 photo照片建模技术和Autodesk 360 viewer通用 ...
- SharePoint 2010 匿名访问开启后不能访问Allitems.aspx或DisplayForm.aspx
Body: Full Credit goes to Pet Stilgoe: http://www.petestilgoe.com/2010/02/allowed-anonymous-access-o ...
- UIModalPresentationStyle和UIModalTransitionStyle
一.主要用途 弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等 ...
- umask 权限设置文章
文章来源 https://www.starduster.me/2014/12/29/use-umask-to-config-sftp-upload-files/ 最近遇到一点事,需要开放工作室服务器的 ...