首页 > 代码库 > 2017.07.19
2017.07.19
公司运用Spring框架来干事情,限于之前基础差,并不了解什么是Spring。首收要了解Spring,就需要知道Spring的两种最重要的概念,DI(依赖注入)和AOP(面向切面编程)。DI(依赖注入),来举一个简单的列子,什么叫依赖呢?A调用B,A能够调用B说名一个问题,A与B是依赖关系,在软件上来说就是A与B有依赖关系。IOC(控制反转)那么问题来了,如果不反转会发生什么?A既然不能调用B,那么B如何才能被A使用呢,很明显此时需要通过一些其他方式,比如
B b=new B();/*这种形式*/
B新建了一个实列,此时A就需要主动去调用。那么反转就是B主动,A被动,控制这中反转就是DI,也就是依赖注入。
举个列子:
通常情况下,假如你有一天在家里口渴了,要喝水,那么你可以到你小区的小卖部去,告诉他们,你需要一瓶水,然后小卖部给你一瓶水! 这本来没有太大问题,关键是如果小卖部很远,那么你必须知道:从你家如何到小卖部;小卖部里是否有你需要的水;你还要考虑是否开着车去;等等等等,也许有太多的问题要考虑了。也就是说,为了一瓶水,你还可能需要依赖于车等等这些交通工具或别的工具,问题是不是变得复杂了?那么如何解决这个问题呢?
解决这个问题的方法很简单:小卖部提供送货上门服务,凡是小卖部的会员,你只要告知小卖部你需要什么,小卖部将主动把货物给你送上门来!这样一来,你只需要做两件事情,你就可以活得更加轻松自在:
第一:向小卖部注册为会员
第二:告诉小卖部你需要什么
Spring就是小卖部,你就是A对象,水就是B对象
第一:在Spring中声明一个类:A
第二:告诉Spring,A需要B
这个列子的理解方式我是参考博客:http://blog.csdn.net/li_tengfei/article/details/6106317
AOP(面向切面编程):将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。盗用网上一幅很经典的图
从这幅图里面应该能够看出在实际使用中是将相同的功能切出来,关注其他核心业务点。
2017.07.19