spring bean实例化和初始化的区别,spring创建对象和new对象和区别

  spring bean实例化和初始化的区别,spring创建对象和new对象和区别

  

目录

bean初始化中新对象和Spring的区别意味着什么?简单理解Spring类的注入和new简单理解springbootspring的singleton是针对自动注入的。

 

  00-1010我把旧系统代码迁移到基于Spring构建的新系统时遇到了这个问题。旧代码中有很多地方使用了new方法来初始化对象,当时并没有特别注意。最后在联调中发现,所有使用Autowired自动依赖注入的新对象都抛出了NullPointerException。

  

new对象与Spring对bean初始化差别

@组件类别A {.} @组件类B {.} @ component class C { @ Autowired A A;@ Autowired B b}当我用C c=new C()时,C中的a和b都为null,即无法完成注入。

 

  说实话,在联调的那一瞬间,我有一瞬间不知所措,但是现在回想起来,哎呀,真是太傻了。

  

什么意思呢?

Spring会先通过new方法创建一个对象,然后完成属性的填充,对外是“自动”的;但是当我们直接通过new方法创建一个对象时,没有人填充属性,所以内部属性值都是null。

 

  

简单来理解

 

  00-1010main.run方法进入refreshContextRefresh finishbeanforyinitialization(Bean factory的初始化),然后获取Bean(acquisition Bean)doGetBeancrea。TeBeandoCreateBean(将在此方法内部创建Bean,当创建bean时,将执行该方法)populate bean(autowired automatic injection)applyPropertyValues PS:new object,不能自动分配对象的injected属性。只有通过注入对象,才能赋予对象的注入属性;

  而且注入的属性不能在构造函数中操作,因为没有创建bean,也没有注入属性,所以为null。

  默认情况下,问题:是单例模式。有必要创建单例类吗?

  自己理解:是必要的。如果自动连线不用于自动注射,新操作仍然可以生成多个对象。

  00-1010示例:

  @Component公共类cxf client { undefined @ Value( $ { address } )私有字符串地址;private cxf client(){ undefined system . out . println(地址);//此时为null。bean未加载,属性未加载} public void create client(){ undefined system . out . println(address);//这是配置文件中的值}私有静态类Singleton Holder { undefined Private Static Final CXF Client Instance=New CXF Client();} public static final cxf client getInstance(){ undefined return singleton holder。实例;} }公共类测试{ undefined @ auto wired private cxf client cxf client;public void test client(){ undefined cxf client . getinstance()。create client();//Print为空。无法注入cxf client . create client();//打印为配置文件中的值}}

  以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: