Spring的IOC和AOP原理

    首先我是一个刚入行的初级程序员,还没有被安排到项目开发中,得靠自己先学很多东西。所以通过博客来检测自己每段时间的学习进度。前面的Java基础和jdbc就不说了,从现在的学习开始。    

    这段时间一直都在学习ssm框架。今天先说spring。如果有错误的地方希望有大神帮忙指点指点。

     spring是一个轻量级的基于IOC和AOP的企业级容器框架。要了解spring一定要先知道spring的IOC(控制反转)和DI(依赖注入)。

什么是IOC——控制反转?

     每次说到spring的时候,总避免不了IOC,DI,AOP等等。那到底什么是IOC呢?

            IOC是控制反转的意思。意思就是将对象的创建和依赖关系交给第三方容器来执行。IOC来控制对象的生命周期和依赖关系。从而达到解耦合的目的。

    

    客户端不主动创建用户类的对象了,而是全部交给ioc容器来完成。客户端通过一些操作得到ioc创建的对象并使用。这样的话对象的依赖关系就不再复杂了。

    ioc容器采用的是工厂模式。它最重要的接口就是它的BeanFactory接口。它是ioc容器的顶级接口。所有的bean工厂都直接或者间接的实现了这个工厂。而通过阅读这个接口的源码可以发现(源码可以自行百度)它的核心功能主要就是通过名称或者类型来返回一个bean的实例。

     AOP————面向切面

    spring的另一个代表就是aop了,aop就是传说中的面向切面编程。刚接触的人可能瞬间就想起了面向过程和面向对象。有人说AOP是一种新的程序设计思想,其实不然。aop的意思是面向切面编程思想。这里的切面体现的是事物的外在特性在不同观察角度下的体现。

    aop将应用系统分为核心业务逻辑和横向的通用逻辑,首先找到关注点,也就是需要实现的公共功能,然后将这些关注点分离。通过公共功能的需求,给class类定义切入点。spring会根据这些切入点找到class类中的对应方法。如果匹配到了切入点的方法,那么spring就能通过配置文件给关注点找到对应的advice(通知,我感觉叫“增强”更好一点吧?)。然后将advice织入程序的连接点处。


    aop使用的是动态代理,所谓的动态代理就是aop不会去修改字节码,而是在内存中生成一个临时的aop对象。这个对象包含了目标对象的所有方法。并在特定的节点做了增强处理,之后再回调目标对象的原方法。通过这个操作可以将日志等其他的系统级关注点加入到程序中。

    spring对aop提供了很好的支持,允许通过分离应用的业务逻辑和系统级服务来进行高内聚的开发。

    我总结我学到的知识点大概就是这样了,欢迎有大神指正我的错误。也欢迎补充!

猜你喜欢

转载自blog.csdn.net/liu8527/article/details/80352455