• Spring new对象时注解失效


    新建了一个新类(A)后,在类中用注解将属性注入。类名(A)上用 @Component ,类中的一个属性(name)上用 @Autowired或@Resource,

    方法(fun)中通过 属性(name)来调用name固有的方法,我调用的时候 是 :

    new A().fun();

    结果运行报错,报 java.lang.NullPointerException,说 name属性为空。

    后面才知道,当使用注解注入之后,重新new的话,注解的功能会失效。

    解决方法,调用的时候:

    @resourse A a;
    a.fun();

      经查询发现,spring的创建对象步骤在类加载时就已经通过spring容器创建成功了,用new关键字new出来的对象,jvm会重新分配对应的空间和指针,

    这完全就不受spring管理。所以spring管理的任何其它的东西你就拿不到,也就会报NullPointerException错,所以在此时一旦自行New,所有的相应注入

    即会失败,在使用时就产生了冲突。

      注意,这里并不是说使用了注解以后就不能new,测试结果是,能实例化,并且相应的方法也是可以使用的。但是,实例化后相应Class 相关的注入也

    就会集体失效,除非你所有步骤都用new的方式,否则它还是会报错。

      至于正确的解决方案,使用了注解,就别使用New, 二者不可兼得。

  • 相关阅读:
    scrapy 链接数据库创表语句
    工作问题总结
    插入排序
    centos6.5 安装python2.7.5
    冒泡排序
    [Python笔记]第十篇:模块续
    [Python笔记]第九篇:re正则表达式
    [Python笔记]第八篇:模块
    [Python笔记]第六篇:文件处理
    [Python笔记]第五篇:递归
  • 原文地址:https://www.cnblogs.com/xbq8080/p/spring.html
Copyright © 2020-2023  润新知