Spring 注解 new创建对象后失效

原创 2016年08月30日 17:39:14

       遇到这么一个情况,想写一个Util工具类用于记录操作日志,在无法使用static关键字情况下,使用new来创建对象,随后运行一直报异常,

java.lang.NullPointerException
	at 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



版权声明:本文为博主原创文章,未经博主允许不得转载。

[转]Spring依赖注入和实例化(new)的差别

Spring依赖注入和实例化(new)的差别。 Sping为什么使用依赖注入而不使用实例化对象的方式? 首先说明一下概念 依赖注入(Dependency of Injection)和...
  • mrli113
  • mrli113
  • 2017年04月26日 11:44
  • 1631

手动将new出来的object注入(注册)到spring容器中

看dubbo源代码. xml里配置的dubbo consumer对应的ReferenceBean. 是spring的FactoryBean. 一般情况下FactoryBean 直接配置在xml里,然...
  • fei33423
  • fei33423
  • 2016年11月09日 16:02
  • 1412

spring注入的对象和new的对象到底有啥区别

在使用springboot过程中,想使用jdbc模板,就是直接在service层注入一个jdbcTemplate属性,然后直接使用,但是又想封装一下,就创建一个类,类中有jdbcTemplate属性,...
  • badboy_qiao
  • badboy_qiao
  • 2016年09月30日 19:00
  • 5703

Java 动态的创建注入代码,注入方法给类或者接口并通过反射调用

java 动态编译代码(在运行阶段动态注入代码)
  • xiyushiyi
  • xiyushiyi
  • 2014年11月24日 15:17
  • 13757

在spring 中如果使用new创建一个对象时 这个对象将不在受spring管理器管理

文章如标题具体如下 比如现在有一个service 层 package com.zyc.service.impl; import javax.annotation.Resource; im...
  • zhaoyachao123
  • zhaoyachao123
  • 2017年01月06日 08:34
  • 1326

springboot Configuration 获取不到@value配置问题

springboot 与shiro整合是发现@value获取不到值, 弄了很久才发现 配置Shiro是多了这个配置 shiro生命周期处理器 public LifecycleBeanPostP...
  • afterwards520
  • afterwards520
  • 2017年09月12日 13:38
  • 1572

new出来的service对象和你在spring中注入的service对象不是同一个对象

new出来的service对象和你在spring中注入的service对象不是同一个对象,在spring中service对象到你是赋了值的,但是你new出来的service对象中的dao是没有赋值的。...
  • wang1472jian1110
  • wang1472jian1110
  • 2015年01月20日 08:35
  • 2175

Spring boot 过滤返回对象属性遇到的各种坑

Spring boot 过滤返回对象属性遇到的各种坑在很多的应用场景中,我们从后台查询出来的对象数据并不想把所有的字段返回到前台,特别是一些敏感的字段,如密码,解决这种问题有一下几种方式 可以查询数据...
  • simba_1986
  • simba_1986
  • 2017年10月20日 22:35
  • 1518

关于 Spring new出来的对象 与自动注入对象

最近工作中碰到一个问题,系统架构是spring+mybatis+Quartz ,Quartz启动一个定时Job 跑任务,定时的Job中new了一个任务类出来,这个任务类中又用了spring的自动注入,...
  • u013641750
  • u013641750
  • 2016年04月28日 10:04
  • 362

Spring学习笔记——关于Spring注解扫描不能注入new对象问题

这几天Leader让我用工厂模式对部分业务逻辑代码进行重构,过程是痛苦的(这里就不详细说了),结果很甜蜜。下面记录一下我在重构过程中遇到一个问题。 部分代码如下:@service(orderFact...
  • fuyuwei2015
  • fuyuwei2015
  • 2015年06月01日 18:18
  • 3850
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring 注解 new创建对象后失效
举报原因:
原因补充:

(最多只允许输入30个字)