Spring知识点总结

    在学习Spring之前,先了解Spring是什么。百度百科上解释:Spring是分层的JavaSE/EE full-stack轻量级开源框架,以IoC(Inverse of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程为内核)。

这里涉及到两个关键词。那就是Ioc和AOP。弄明确这两个知识点,Spring的核心也就掌握了一大半了。


    一、IoC


    所谓IoC就是inverse of control 控制反转,将对象的创建权(实例化) 交予spring框架创建过程。

当应用了IoC,一个对象依赖的其他对象会通过被动的方式传递进来。而不是这个对象自己创建或者查找依赖对象。

    举例。我们在学习三层的时候都知道Service层的类要调用Dao的方法。必须在Service类中加入对Dao的引用,才干调用Dao的方法。以下我们就一起来回想一下我们的引用方式:


    1.使用new

        

StudentDao stuDao = new StudentDao();

    2.使用接口

        

StudentDao stuDao = new UserDaoImpl();

    3.使用工厂

        

StudentDao stuDao = BeanFactory.getBean();


    以上几种,都是我们曾经学习过的。当中前两种我们知道,Service层和Dao的依赖比較严重,为了使Service和Dao之间进行解耦。我们引入了工厂。可是使用工厂也有对应的弊端:


    1.工厂类依然须要去了解详细的实现类以及其參数,当程序复杂度到一定程度时。工厂类依然可能非常复杂。

    2.还是必需要有源代码才干更新工厂类的代码,才干又一次编译。

    基于以上原因,我们引入了Spring IoC.

    Spring IoC通过配置文件配置:

    在配置文件里配置实体的Id和相应的实现类。然后通过API读取:

    

<bean id="userDao" class="cn.tgb.dao.impl.UserDaoImpl">

    

UserDao userDao = BeanFactory.getBean("userDao");


    这样写的长处在于,不须要代码书写工厂类了。仅仅是一个简单的XML配置文件,就搞定了。因此,将新类注冊到整个程序时,也就不须要源代码、编译之类的。假设没有特殊情况。仅仅要编译实现类即可了。


    二、AOP

    

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程。通过预编译方式和执行期动态代理实现程序功能的统一维护的一种技术。

AOP採取横向抽取机制,代替了传统纵向继承体系反复性代码,使用springAOP完毕功能:性能监控、事务管理、日志记录、缓存等.


    AOP的相关术语例如以下:

    

    1.Target:目标对象。被代理对象。比如:UserService

    2.JoinPoint 连接点,目标对象中被代理的方法(掉)。

比如:saveUser()/updateUser/deleteUser/findUser

    3.PointCut 切入点,实际上被代理的方法,及实际上的连接点。

比如:saveUser

       切入点是连接点子集

    4.Advice 通知/增强,在切入点前或后运行的方法。比如:before、after

          分类:前置通知、后置通知,围绕通知等,通知是对方法进行增强。

    5.Introduction,引介,特殊的通知。

对类直接增强。

给类加入方法。改动不要方法等。 

    6.Weaving ,织入:将通知 引用 到 目标对象上 过程。及将通知与切入点关联过程。

    7.Proxy,代理。目标对象Target生成代理对象,于是就能够代码增强了。

    用一张图来总结他们的关系: 

                                                                                                         图1 AOP 术语之间的关系


    AOP并没有帮助我们解决不论什么新的问题,它仅仅是提供了一种更好的办法,可以用更少的工作量来解决现有的一些问题,而且使得系统更加健壮。可维护性更好。

同一时候。它让我们在进行系统架构和模块设计的时候多了新的选择和新的思路。

    

    

原文地址:https://www.cnblogs.com/clnchanpin/p/6789037.html