多例问题

多例问题

老师,像一般的entity中的实例类是不是要用多例模式创建对象啊,因为每个请求都牵扯到对数据的更改什么的 。 如果不需要的话, 那什么情况下用多例,麻烦说个例子啊。。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2021-05-20 12:00:58

同学你好,不是是仅使用单例就够了,它还要考虑一些其他问题。

    ​实体类基本是用new的方式来创建或者在Spring中设置多例的形式。

    ​例如,有一个实体类User ,它涉及到一些属性值的设置修改,这个情况下,它就不适合用单例了,因为如果只有一个User对象,大家都去操作它的属性值,就会引发线程安全问题,此时使用单例是不合理的。

    ​而例如dao,service,controller,以及工具类,等不涉及数据的存储、属性赋值的,而是只是用一个对象来调用方法的,建议使用单例模式。

​实体类我们一般就用多例,或者直接用new的方式来创建,避免产生线程安全问题。

祝学习愉快!

  • 提问者 rock221 #1

    但是如果ioc容器中取出的user对象且这个对象只创建了,没有属性的注入, 大家取出来这个对象都是空的啊, 在写代码的时候对其进行属性set,另外一个人调用这个对象的时候,里面还是空的阿。并不会受影响阿,经测试发现取出的对象,在当前类或者方法中set,只有局部作用。 那为什么不能单例呢?

    2021-05-20 12:07:20
  • 提问者 rock221 #2

    一般实例类,不就是用来封装前端的数据吗,或者数据库的数据的注入。 本质就是用来存储数据的。 

    2021-05-20 12:08:35
  • 好帮手慕小班 回复 提问者 rock221 #3

    同学你好,实体类本质是用来存储数据的,这个描述是正确的,但是如果是单例模式,那么所有的操作应该都是同一个对象,如下所示

    单例模式操作的是同一个对象

    http://img1.sycdn.imooc.com//climg/60a61ffd0957800c12390696.jpg

    ​此时如果两个人(两个线程)同时操作这个对象,就会容易出现数据丢失的情况。

    祝学习愉快!

    2021-05-20 16:38:53
rock221 提问者 2021-05-19 22:43:27

不过老师我感觉entity下的实体类也没必要多例, 因为我测试过,如果在单例的情况下,只创建对象,不注入属性的情况下。每个调用者取出的这个实例对象里面的值都是空的, 如果在类1对user对象进行赋值,但是在类2再取出这个user对象,里面的值仍然是空的,而不是类1中的user赋值过的信息。所以单例好像就可以了吧?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师