首页 > 作文

详谈spring中bean注入无效和new创建对象的区别

更新时间:2023-04-05 21:57:53 阅读: 评论:0

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

注意!如果直接new的话,类里面的autowire将不生效

项目中用到如下代码

然后 在运行的时候发现 通过 @autowired注入的对象 capitaldetaildomapper和 因为的读音excelrecorddomapper的值为null

刚开始以为是excellistener没有加bean扫描注解导致的

于是加上后

结果在运行的时候,两个mapper,仍然为null。

检查代码发现

在excellistener这个类的使用场景中,英语四六级考试是 excellistener excellistener= new excellistener(); 创建的对象

这里就明白了, 手动通过new创建和通过spring容器创建管理对象是不一样的,手动new的对象,内部用@autowire注解是无效的。

若让该autowire生效,则需要通过容器来管理对象

厉志语改造如下,先给excellistener加上注解@component

这样 这个bean就会被加载到spring容器中,这里scope表示bean的作用范围,spring默认创建的对象是单例的

prototype是非单例,这里我主要是想在不同的线程里面创建不同的excellistener实例。

可以通过容器获取bean,也可以直接@autowire

其中springbeanutils为实现了beanfactorypostprocessor接口的实现类

能够从spring容器里面获取到bean的实例,如果bean是非单例的 每次则获取到是一个新的bean

注意!!如果a类是单例的事实论据,那么a类中的成员b类声明为非单例的,也是无效的。

因为只有a类的一个实例,里面包含的b类的实例也只有一个。 除非能再次创建a类的实例,才能创建出另一个b类的实例对象。夏天感冒

bean交个spring和new比较区别

在spring的配置文件中我们要使用datasource这个对吧

这个bean将会被多个bean引用 通过ref=”datesource”这个引用 当我们要修改这个只要修改引用就好了 不需要修改很多了

主要是解耦

比如你有一个a类 在好几个类里边要调用到a的方法 new的话就要在每个类里都new a()

spring的话 只要配置一个bean进行注入就够了。

哪天你不用a类了 改成b了~ 直接把bean里边的class改成b就搞定了

如果用new的话 要改好几个地方~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-05 21:57:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/4ca59df2aec54f08a5d6943aabe8ef6e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:详谈spring中bean注入无效和new创建对象的区别.doc

本文 PDF 下载地址:详谈spring中bean注入无效和new创建对象的区别.pdf

标签:实例   对象   容器   注解
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图