码迷,mamicode.com
首页 > 编程语言 > 详细

Spring知识点总结

时间:2015-06-29 20:19:15      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

    在学习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并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,并且使得系统更加健壮,可维护性更好。同时,它让我们在进行系统架构和模块设计的时候多了新的选择和新的思路。

    

    

版权声明:本文为博主原创文章,未经博主允许不得转载。

Spring知识点总结

标签:

原文地址:http://blog.csdn.net/zjx86320/article/details/46683455

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!