zoukankan      html  css  js  c++  java
  • Spring源码由浅入深系列一 简介

    概述:

            Spring是一个企业级的开源框架。它提供轻量级的依赖注入、面向切面编程、全方位的整合框架。
    下图是Spring框架的组成部分,各部分内容作了简单说明。


    依赖注入: 
            依赖注入是Spring框架的灵魂。它是一种解耦组件之间关系的高层设计模式。

    依赖注入案例分析:
            现在有一个业务流程中需要把数据保存到软盘中去。最直观的方法就是直接在业务流程中创建一个软盘,用软盘的方式保存数据。如下图:

            那如果现在业务变更,我可以让客户选择用软盘来保存数据,或者是U盘。那可能的解决方式是面向接口编程,由工厂帮助我们去创建具体介质。如下图所示:

            在这里请注意,我们通常的做法是在业务流程中,根据客户的选择,由工厂生成一个特定介质给业务,这就是我们常说的简单工厂模式。但是,也可以利用反射在工厂里去创建、装配业务与介质。业务与具体的介质完全没有关系,由工厂提供。这时候工厂就变为了一个依赖注入的容器。在Spring中,这个容器由BeanFactory实现。
            Spring的灵魂是依赖注入,依赖注入灵魂就是反射。它的整个实现都是由Java反射去支撑的。

    面向切面:

            把一些公共功能定义成单独对象,然后在不修改其它类的前提下,将公共功能加入到这些类中。面向切面常用于缓存统一处理、统一异常处理等等。

    AOP(面向切面)概念:
            Joinpoint(连接点): 程序执行过程中某个特定的点,比如方法调用的时候或者抛出异常的时候
            PointCut(切入点): 需要被添加上通知的连接点的集合。
            Advice(通知): 在连接点,动态嵌入的一段独立代码(通知常用来调用系统组件方法)。
            Aspect(切面): 切入点和Advice的结合(抽象概念:定义在切入点调用通知)
            Target(目标对象): 需要被添加上Advice的对象
            代理对象:AOP框架生成的对象。在目标对象的基础上,添加了其他操作

            面向切面的实现是通过动态代理实现的:JDK动态代理、CGLIB动态代理。

            这一章,主要从宏观上把握Spring.到下一章,我们开始剖析Spring的源码。

  • 相关阅读:
    【Python五篇慢慢弹(3)】函数修行知python
    【Python五篇慢慢弹】数据结构看python
    【项目管理】GitHub使用操作指南
    【Python五篇慢慢弹】快速上手学python
    【NLP】十分钟快览自然语言处理学习总结
    【NLP】条件随机场知识扩展延伸(五)
    【NLP】基于统计学习方法角度谈谈CRF(四)
    【NLP】基于机器学习角度谈谈CRF(三)
    【NLP】基于自然语言处理角度谈谈CRF(二)
    【NLP】前戏:一起走进条件随机场(一)
  • 原文地址:https://www.cnblogs.com/writeLessDoMore/p/6939408.html
Copyright © 2011-2022 走看看