spring入门(002) - 第一章 Spring概述

2019/06/12

spring入门(002) - 第一章 Spring概述

spring三阶段-入门

入门主要包括两个部分:

  1. spring基础
  2. 一个简单的spring项目

对于spring基础,主要是了解最基本的spring结构,参考的是慕课网-spring入门

主要是希望自己对spring有个全局性的认识。

所以具体知识点可以不懂,但是对用spring整体一定要把握。

整个视频包含4个主要部分:

  • spring IOC
  • spring bean
  • spring AOP
  • AspectJ

而本系列博文也会按照视频章节进行总结,github

本章主要是对spring进行概述。


1 课程整体介绍

整个视频的核心内容:

  1. 什么是框架
  2. spring简介
  3. IOC(配置、注解)
  4. Bean(配置、注解)
  5. AOP(配置、注解、AspectJ、API)

核心部分IOC、Bean、AOP等都是使用配置和注解两种形式实现,这也是学习的重点。

spring虽然内容很多,但是首先还是应该学习最基础关键的, IOC和AOP

要知道配置和注解两种形式的使用规则,以及实现原理

spring官方文档很好,要看文档

2 spring概况

2.1 spring_framework_runtime

首先来一张spring的整体架构 spring_framework_runtime

note: 为什么叫runtime

如图,我的理解是,图中是spring能够提供的服务汇总,
然后spring按照某个标准将所有服务(新手理解成api更容易接受)分成四块罢了。

1、 Test
    spring支持单元测试服务(即可理解为提供了测试api,下同)

2、 Core Container
    spring的核心服务模块。

    Beans和Core底层实现了IOC,实现了 解耦提供实例的服务。
    Context基于Beans和Core实现,将具体逻辑代码注册的bean管理起来,可以理解成注解如@Service就是从这里拿到的实例。
    SpEl暂不关心

3 AOP
    实现AOP模式调用的API,就相当于ruby中after_save的底层实现;
    AOP注解调用的即这块API服务的代码逻辑。

4 Data Access 和 Web
    如果说上面三块的服务还都是用注解或者配置等形式简洁调用的API服务模块;
    这两块应该是程序员直接操作的数据库访问 以及 web访问。

    也就是spring有提供了两块服务API,是关于数据库和web的,
    比如JDBC可以直接使用JDBC提供的API访问数据库,Transactions可以实现事务
    而借助Servlet API可以实现web访问。

总结:上述我的理解很粗糙,就是将图中一个个模块理解成实现某个功能的一组接口集合。
比如JDBC模块就是提供了一组数据库增删改查的API接口;
同理AOP模块就是提供了切面逻辑的API,调用了该API就能实现切面功能;
Beans则提供了bean的实例化、调用、销毁等一组API,当然这些API可能是coder调用,也可能是spring内部调用(如销毁实例)
虽然粗糙,但这样记忆思路就比较清晰。

记住:上图就是spring运行时所能提供的所有服务,每个服务是由多个API组成的一个class(或者容器)。

2.2 基本概念

2.2.1 AOP

业务级服务和系统级服务(系统级服务是指与业务无关,但是会被业务逻辑调用的服务,如日志,数据库连接)

AOP针对的是系统级服务,也就是像日志、事务、数据库连接等,业务逻辑中要用到但是又和业务无关的功能;

比如入库和出库两个业务服务都需要用到日志、事务等功能,而日志服务本身各个服务都在用,在逻辑上和入库出库没关系。

2.2.2 spring既是容器又是框架

  • 容器:spring中spring context管理对象,控制对象的配置和生命周期。(就像List);
  • 框架:spring提供了事务、AOP等一大堆功能API,是一个多功能模块的复杂架构

2.2.3 bean

spring管理的对象都被叫作bean,所以spring又叫bean容器。

spring中为什么把一个实例叫做bean呢?

2.2.4 一些总结

你以为的你以为的其实并不是你以为的那样。

  1. spring运行时的大小和开销其实很小,所以算轻量级
  2. 实际有很多对spring现有功能进行扩展修改的

3 什么是spring框架

当当当当,总结了这么多,spring是什么,你懂了吗?

1、 首先什么是框架?

框架就是事先制定了一系列规则和规范,然后所有程序员都按这个规范去码代码。

突然发现,和ruby的原则很像有没有,约定大于配置。

就是大家都遵守某个约定去code,

只不过spring约定只是针对解耦和切面这两个核心部分,而ruby是整个价值观。

2、 那么spring框架是什么?

首先一句话: spring做这么多的目的主要是搞定两个问题的: 解耦提供实例 和 AOP

所以, 粗糙的这么理解,spring就只干了两件事: 提供实例 和 AOP

至于实例是不是解耦的,这是spring关心的,我们不关心。

那总结起来就是:

  1. spring是一个框架,大家都要遵守这个规则写代码;
  2. 规则是什么? IOC和AOP
  3. 此外,看看上面那个图,spring还提供了很多服务,不过这些API很好理解,会用就行,创新点不在这。

4 note

note 为什么叫runtime

Runtime是什么?

结合第2个和最后一个回答:

首先runtime是运行时状态下确定的结果,如多态,反射

然后spring_framework_runtime,也就是指runtime状态下spring能够提供了哪些服务;

所以图中都是服务模块,我们可在spring运行时状态调用扩展。

第二章 spring IOC


Show Disqus Comments

Post Directory