spring不用注解怎么获取bean对象,spring注入bean的三种方式

  spring不用注解怎么获取bean对象,spring注入bean的三种方式

  

目录

bean注入无效,new创建对象差异。项目中使用了以下代码来检查代码。发现bean注入和new的区别主要是解耦。

 

  00-1010注意!如果直接新建,该类中的自动连线将不会生效。

  00-1010然后在运行时,发现通过@Autowired注入的对象capitalDetailDOMapper和excelRecordDOMapper的值为null。

  公共类ExcelListener扩展了AnalysisEventListenerList { @ Autowiredprivate CapitalDetailDOMapper CapitalDetailDOMapper;@ autowired private ExcelRecordDOMapper ExcelRecordDOMapper;……}一开始我以为ExcelListener没有添加bean扫描评论。

  所以加了之后

  @Componentpublic类ExcelListener扩展了AnalysisEventListenerList { @ autowired private CapitalDetailDOMapper CapitalDetailDOMapper;@ autowired private ExcelRecordDOMapper ExcelRecordDOMapper;…}运行时的结果,两个映射器,仍然为空。

  00-1010在这个类ExcelListener的使用场景中,是Excel Listener Excel Listener=New Excel Listener();创建的对象

  这里理解为,通过new手动创建管理对象不同于通过spring容器创建管理对象。手动创建新对象并使用@autowire对其进行内部注释是无效的。

  要使此自动关联生效,您需要通过容器管理对象。

  修改如下:首先在ExcelListener中添加annotation @Component。

  @ Scope(" prototype ")@ Component(" excelListener ")公共类excel listener扩展AnalysisEventListenerList { @ Autowiredprivate CapitalDetailDOMapper CapitalDetailDOMapper;@ autowired private ExcelRecordDOMapper ExcelRecordDOMapper;…}这样这个bean就会被加载到spring容器中,其中Scope表示bean的作用域,spring默认创建的对象是singleton。

  原型是一个独特的例子。在这里,我主要想在不同的线程中创建不同的ExcelListener实例。

  你可以通过容器或者直接@autowire来获取bean。

  excel listener excel listener=spring beanutils . get bean(" excel listener ");其中SpringBeanUtils是实现BeanFactoryPostProcessor接口的实现类。

  您可以从spring容器中获得bean的实例。如果bean是非单例的,那么每次都可以获得一个新的bean。

  @Component@Getterpublic类SpringBeanUtils实现了BeanFactoryPostProcessor { private static ConfigurableListableBeanFactory bean factory;public static T get bean(String bean name){ return(T)bean factory . get bean(bean name);} public static T get bean(Class bean clz){ return bean factory . get bean(bean clz);} @ override public void postprocessbean factory(configurablelistablebean factory)抛出bean exception { spring bean utils . bean factory=bean factory;}}注意!如果A类是singleton,那么B类(A类的成员)被声明为non-singleton,这也是无效的。

  因为类A只有一个实例,所以它只包含类B的一个实例。除非可以再次创建类A的实例,否则可以创建另一个类B的实例对象。

  

bean注入无效和new创建对象区别

我们要在spring的配置文件中使用DataSource,对吗?

 

  多个bean将通过引用ref=dateSource 引用此bean。当我们要修改这个的时候,只需要修改引用就可以了,不需要修改太多。

  00-1010举个例子,如果你在几个类中有一个类A,如果你想调用A的方法new,那么你应该在每个类中都有new A()。

  对于spring来说,配置一个用于注入的bean就足够了。

  不需要A类换成B类的时候~把bean里的类换成B类就行了。

  如果用新的,还得换几个地方~

  以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的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作用
  • 留言与评论(共有 条评论)
       
    验证码: