关于初学spring的一些理解

      从C++/C转到成java,也因为项目的一些需要,需要学习spring,刚开始对spring框架非常的困惑,在查阅了很多资料后有了一些自己的理解,现在记录下来,当然也会穿插一些其他博主的见解。

      因为在C中很多东西都是需要自己做的,所以对于框架的理解都是集成某一功能的模块,而在java中,更像我们实现了某一功能的模块,而java框架已经为我们做好了高屋建瓴。

    引用下知乎上的一篇回答,https://www.zhihu.com/question/23277575

    这第一票回答时把最初始的要做的事情比喻为造一辆汽车,最开始的顺序是造轮子,底盘,车身,框架。造好了以后可以执行run()让他跑起来(注意此时造车身的时候你待把轮子给我),但是一旦轮子的尺寸修改了,其他的地方也要随之修改(因为我就是按你给的轮子造的车身呀),不可谓是牵一发而动全身(此处羞愧的想到当初用c写的程序非常之僵硬),这里的逻辑称为一条龙,你在执行run()的时候只需要执行一个造车身就可以了,每个类会自动寻找所需的东西。在面对这种情况下,迫切的需要改变,另一种方法就是将轮子的参数隔离起来,应该是不只轮子,所有的部件都隔离起来,每一个部件被调用的时候作为一个密封的整体,不需要管内部需要什么参数,这样即使轮子的尺寸修改也跟其他车身没有关系,反正我只要知道你是轮子就行了,但是轮子不能不留一些设置参数接口,所有就有了构造函数传参和使用set和get传参。

    等部件都造好了以后,相对于第一种方法我们缺少了什么,那就是拼接和run(),既然现在只组装了部件,那就需要在执行run()的时候拼接车子了。但是本来run()只需要通知下去就会有辆车,现在却要干那么多活,怎么办,当然是也封装起来啊,怎么封装我们不管,反正已经实现了我们最初的目的,依赖隔离,好吧spring中称呼为控制反转。

   但是把装配汽车和run()放在那里不管也不合适,再加把劲呗,怎么封装,车子拼接的顺序应该不会变吧,人家汽车拼接工厂都是流水线呀,那就写好一个流程就好了,这里还是需要一个启动的地方,那就是run(),这里的run()其实已经可以看做是spring框架的入口,但是部件参数的设置不能要求也是写死,但是我完全不管的话你到时候造好了拿给我,谁知道是什么东西,所以就需要先在我这里备个案,这应该就是spring中的装载bean了,备案完了以后你造好了就先放那,我需要的时候就会直接拿过来用,反正如果你没造好我就报错呗。顺便扯回来,怎么备案啊,就是spring中的xml配置啊,注解啊。

      那xml装载和注解又有什么不同呢,不就是主动和被动的关系吗(有没有小贱人喜欢被动的。。。),xml是你需要主动把你的部件类注册一哈哈,注解的你在造的时候通知一声,有专门的人去扫描你造的部件,但是一定要在监管范围之下,出了国可就是倒卖国家信息了哈。

     有人又说那AOP是啥子,我的理解是,每一个造部件的有一个习惯,就是造之前要撒尿,造完要拉屎,假设厕所很远,那每个人都去测试是不是很浪费时间和精力,但是人不能让尿给憋死,咋弄啊,在你旁边放个夜壶啊,想尿想拉了转身就是,又有人要问了,谁去收拾,你放心不可能是你,人家专门有个小太监,但是你要提前通知哈,这就是AOP的概念了吧,你看在你们每个线性的流程中,是不是有个小太监在中途插了你们两下菊花,这个小太监就是面向切面编程了。

    好了,现在万事具备,一声发车号令下,火车从启动,路上需要哪个部件就开导那里取上,当然造部件的也会有点小心思,你说用了谁谁谁家螺丝取两个回来就齐了,人家也不待屁颠屁颠的过去,这就是你在编写package了,最后正常跑起来就完事了,当然也会有web和resource的,但是道理应该都差不多。

    以上就是本人目前对于spring的理解。欢迎指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值