Spring 注解 new创建对象后失效
来源:互联网 发布:女生用电动牙刷知乎 编辑:程序博客网 时间:2024/06/05 09:49
遇到这么一个情况,想写一个Util工具类用于记录操作日志,在无法使用static关键字情况下,使用new来创建对象,随后运行一直报异常,
java.lang.NullPointerExceptionat net.wrtrd.adsystem.sql.dao.impl.LogMapperImpl.insertLog(LogMapperImpl.java:16)at net.wrtrd.adsystem.services.LogService.insertLog(LogService.java:25)at net.wrtrd.adsystem.util.LogWriteUtil.saveLogInfo(LogWriteUtil.java:19)at net.wrtrd.adsystem.util.LogWriteUtil.addLogInfo(LogWriteUtil.java:45)at net.wrtrd.adsystem.control.UserManageAction.getUserInfoAllJson(UserManageAction.java:100)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(
很显然是“空指针”异常,经调试发现在刚进入方法时,1.service对象存在,说明注解生效 2.当运行至new创建对象时,service注入的对象消失。
解决:
经查询发现,spring的创建对象步骤在class加载时就已经通过spring容器创建成功了,所以在此时一旦自行New,所有的相应注入即会失败,在使用时就产生了冲突,你既然要我通过spring来自行创建,你又来自行干预,那我肯定就有意见了,然后我就让你报错让你报错让你报错....... 注意,这里并不是说使用了注解以后就不能new,测试结果是,能实例化,并且相应的方法也是可以使用的。但是,实例化后相应Class 相关的注入也就会集体失效,除非你所有步骤都用new的方式,否则它还是会报错。
至于正确的解决方案,使用了注解,还是老老实实别使用New 二者不可兼得。
本来是有Class,可以截图,便于形象描述,由于更改代码后,相应的已被删除,另外至于为什么注解无法使用static,原因很简单,static是声明这个属性/方法属于Class所有,是无法实例化的,而注解注入是一个实例化的操作,只是它将这个步骤交由了sprign容器来管理,所以很显然它是无法使用static的。
相应可点击:http://blog.csdn.net/fuyuwei2015/article/details/46314743
注解后还能实例化吗?:http://tieba.baidu.com/p/3620886729
0 1
- Spring 注解 new创建对象后失效
- Spring注解事务失效
- Spring bean注解后取对象
- Spring的bean管理-注解创建对象
- Spring学习笔记——关于Spring注解扫描不能注入new对象问题
- Spring学习笔记——关于Spring注解扫描不能注入new对象问题
- Spring的bean管理(注解创建对象)
- Spring的bean管理(注解创建对象)
- new创建类对象
- spring+mybatis的注解事物 失效问题
- 方法上spring事物注解失效问题
- spring aop注解失效之谜
- Spring 使new方法创建的对象可以引用spring管理的bean.
- 创建对象初始化 (new)
- 详解 JAVA 创建对象 NEW
- C++ new创建对象生命周期
- new与delete创建对象
- new表达式如何创建对象
- Java多线程(一)
- 【每天听见吴晓波-2016-07-04】上海房价未来五年还会翻番
- java -- jvm载入器
- OC中的connection 和 session
- 很好的一个关于maven工程创建的文章
- Spring 注解 new创建对象后失效
- 如何在不引用头文件的情况下调用category里面的方法
- Spring重试支持Spring Retry
- Request的getParameter和getAttribute方法的区别
- 碰撞运动 crash.html
- 30.Substring with Concatenation of All Words
- Java的参数传递到底是引用传递还是值传递
- jquery日期控件WdatePicker的使用
- C-运算符优先级一个小例子