sayhitoloverOvO
2021-08-15 09:47
采纳率: 100%
浏览 48
已结题

Spring IOC比new定义方便,那么到底方便在哪里呢?

Spring IOC需要添加注解标志,还要添加配置文件添加bean,最后使用还要加载配置文件获取bean才可以调用,那么为什么说会比new新的对象要方便?只是因为Spring框架可以控制变量的生命周期吗?但是普通代码块结束后变量一样会释放,又有什么区别呢?
如果说是方便DI的话加一个注解确实比普通的get set方法方便一些,但也不至于会比普通定义方便很多吧?

  • 好问题 提建议
  • 收藏

3条回答 默认 最新

  • 悬弧 2021-08-15 10:22
    已采纳

    您问到的,方便在哪里?我说下几点
    1.代码更简洁,注解就搞定
    2.交由spring容器管理bean,就是相当于建立了一个代理,可以随意拓展,不需要修改原来代码

    可能您是初学者,估计还没能感受到拓展这一词的重要性,比如有一个接口方法,里面的业务逻辑很复杂,各种判断条件,这个接口已经部署到生产稳定使用了1年,现在产品想要在这个接口方法参数中,根据某个条件,满足的话,就插入一条日志记录到数据库中。这时候你怎么做?
    大致有两种做法:
    1.直接在原来接口上改,增加关于某条件的判断插入日志记录到数据库
    2.不修改原来的接口进行拓展,使用代理的方式,在方法调用前后进行捕获参数判断插入日志逻辑

    正常情况下,对于正常在使用的接口,除非是不得不去改,否则不要去动,因为我们根本不知道实现该方法的人的具体思路,可能动进去就是牵一发动全身,影响了所有的功能,那这个锅就得你背了,我想你不会含冤背锅的吧
    因此,一般我们都是对接口进行拓展,基于spring aop去拓展,就不会影响到原有业务功能了

    这还只是一个案例,可能还有些代码,打成了jar包,让你在jar包里面做扩展,这时,new出来的对象,将会让你哭笑不得,因为,jar包里面都是class文件的,根本无法编辑和修改

    现在的springboot 不需要那么麻烦了,不需要在配置文件xml配置bean了,会更方便。而且现在主流也是springboot了

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 饶小乖 2021-08-16 10:42

    理解Spring IOC比new定义方便,应该先弄明白对于开发来说“方便”是什么意思。我个人理解“方便”就是有需求变动时,尽量不修改代码就是方便。毕竟都是人类,修改代码就意味着存在bug的风险。。。
    修改配置文件比修改代码“方便”,典型的例子,数据库url,用户名,密码,我们就是放在配置文件里,上生产时,改下配置文件就可以访问生产库。设想一下,如果url是写死在代码里,一旦改错,就要重新修改代码,重新打包,重新部署;就这也不能保证一定不错。而在配置文件,就简单多了。错了改一下文件,重启应用 就好了。
    明白上面的意思,Spring IOC比new定义方便就容易理解了,当我需要换一个实现的类的,new对象,肯定要改代码的;而Spring IOC只需要改配置文件

    评论
    解决 1 无用
    打赏 举报
  • sayhitoloverOvO 2021-08-15 09:52

    1

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题