资讯专栏INFORMATION COLUMN

Spring框架学习笔记(一):官方文档介绍,IoC与AOP概念学习

mindwind / 1788人阅读

摘要:构造函数注入通过调用类的构造函数,将接口实现类通过构造函数变量传入。而在中,其使用横切技术,将这类代码从原属的封装对象中提取出来,封装到一个可重用模块中,称为。

最近实习用到Spring的开发框架,但是之前没有接触过,因此希望利用网上的资源来学习以下。

Spring官方给出了非常全面的介绍,非常适合我这种完全的小白……
在这一系列学习中,我阅读的主要资源是5.1.2 Reference Doc.,以及论坛大神的讲解blog。另外,Spring官方也给出了非常详细的API文档,适合较为熟悉的使用者查阅。
由于本人完全入门级,因此决定从reference一点点读起。

官方文档:Spring Framework Documentation
https://docs.spring.io/spring...

由于缺乏相关概念基础,因此本文开头对Spring官方文档的结构进行简单介绍,之后讲解Spring框架的两大核心:IoC、AOP,在下一篇文章中再开始详细学习Spring官方文档。

documentation主要包括6部分:Core, Testing, Data Access, Web Reactive, Integration, Language。

Core

这一部分介绍了Spring的一些基础核心的技术和功能,属于Spring必读内容。Spring Framework中最重要的一部分是控制反转容器(Inversion of Control container, IoC),而这一功能是由面向方面的编程技术(Aspect-Oriented Programming technology, AOP)实现的。IoC和AOP可以看作Spring框架最重要的两个核心。

为了更详细地阐释Spring Framework的功能,这里先介绍一下IoC和AOP两个概念。

概念引入 1.IoC(控制反转)与DI(依赖注入)
这一部分借鉴了论坛大神的分享:“谈谈对Spring IOC的理解”,https://blog.csdn.net/qq_2265...
这篇blog除讲解控制反转和依赖注入的理论认识以外,还提供了一个小的实例分析,值得阅读。

IoC
IoC本质上是一种设计思想,在IoC中,开发者将设计好的对象交给容器控制,而不是在对象内直接控制。理解IoC的关键点如下:

谁控制谁,控制什么:在传统的Java程序设计中,开发者在对象内部通过new创建新对象,是程序主动创建依赖对象;而在IoC中,专门有一个容器创建这些对象,即由IoC控制对象的创建。因此在IoC中,IoC容器控制对象,主要控制外部资源获取(包括对象、文件等)

为何是反转,哪些方面反转:传统java程序设计中,是由开发者自己在对象中主动控制去直接获取依赖对象,即正转;而在反转中,是容器帮忙创建及注入依赖对象。反转的含义即,容器帮我们查找并注入依赖对象,对象只是被动地接收依赖对象。反转的实际是依赖对象的获取过程

IoC是Spring的核心。对于Spring而言,IoC的含义即由Spring来负责控制对象的生命周期和对象间关系。也就是说,所有的类都会在Spring的容器中登记,我们告诉Spring我们是什么、需要什么,由Spring在系统运行到适当的时候,将需要的东西主动给我们,同时也把我们交给其他需要我们的东西。
在传统java开发中,所有类的创建、销毁(即对象的生命周期)都由引用它的对象控制,而在Spring中,这一控制权转移到了Spring容器中。

DI
DI(Dependency Injection, 依赖注入)可以理解为对IoC从另一个角度的描述。
DI的含义即,组件之间的依赖关系是由容器在运行期间决定的,由容器动态地将某个依赖关系注入到组件之中,即容器动态地向某个对象提供它所需要的外部资源(对象、资源、常量数据)。

这里所谓的“依赖”,指的就是程序中的对象依赖于IoC容器。

IoC注入的类型
包括三种:构造函数注入、属性注入和接口注入。
其中,Spring支撑构造函数注入和属性注入两种。

构造函数注入:通过调用类的构造函数,将接口实现类通过构造函数变量传入。这种方法在调用类创建的时候就将接口实现类的依赖传入。

属性注入:有选择地通过setter方法完成调用类所需依赖的注入,而无需在创建类时注入,更加灵活方便。

接口注入:将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该借口提供相应的注入方法。通过接口注入需要额外声明一个接口,增加了类的数目,且其效果与属性注入无本质区别,因此不提倡。

通过容器完成依赖关系的注入:由容器完成类的初始化与装配工作,让开发者从底层实现类的实例化、依赖关系装配等工作中脱离出来,专注于业务逻辑开发工作。Spring框架即这样的容器,它通过配置文件或注解描述类和类之间的依赖关系,自动完成类的初始化和依赖注入工作。

2.AOP面向方面程序设计
AOP概念的学习借鉴了这篇blog:“Spring3: AOP”, http://www.cnblogs.com/xrq730...

AOP可以理解为面向对象编程(OOP)的补充和完善。OOP通过引入封装、继承、多态等概念建立了对象的层次结构,适用于定义对象间的纵向关系。但对于对象的横向关系的定义,OOP并不适用,因此提出了AOP的概念。

AOP主要关注影响了多个类的公共行为,例如日志代码、异常处理、安全性等,这类代码与所对应的对象的核心功能(业务功能)毫无关系。在OOP中,这类代码会导致大量冗余,不利于模块重用。而在AOP中,其使用“横切”(cross cutting)技术,将这类代码从原属的封装对象中提取出来,封装到一个可重用模块中,称为“Aspect”。这样的操作降低了模块间的耦合度,利于操作和维护。

在AOP中,其将软件系统分为“核心关注点”和“横切关注点”。其中,“横切关注点”为横切出来的aspect,“核心关注点”为然软件系统的主体业务代码。AOP的作用即将二者分离。

对Spring Framework中两大核心概念的简答介绍就到这里,下一篇开始正式学习Spring framework的文档。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72162.html

相关文章

  • Spring框架学习笔记(二):官方文档Core Technologies - Part 1

    摘要:首先介绍系列文章内容及官方文档情况。官方文档中的容器及介绍的容器主要由如下两个包构成以及。这一接口提供了配置机制以及一些基本的功能。该类以方式描述组成应用的对象以及对象间依赖关系。在文件中,使用对相关元素进行标注,在下一级使用标签。 首先介绍系列文章内容及Spring Framework官方文档情况。 在这一系列学习中,我阅读的主要资源是5.1.2 Reference Doc.,以及论...

    cnio 评论0 收藏0
  • Spring Boot [组件学习-Spring]

    摘要:框架最初是由编写的,并且年月首次在许可下发布。在一个方法执行之后,只有在方法退出抛出异常时,才能执行通知在建议方法调用之前和之后,执行通知。方法执行之后,不考虑其结果,执行通知。 导读: 在上篇文章的结尾提到了Spring Boot 提供了一系列的框架整合(Starter POMs)帮助我们提升开发效率,但是这并不意味着我们不需要学习这些框架,反而更需要去学习,通过学习这些框架可以使...

    raoyi 评论0 收藏0
  • Spring入门IOCAOP学习笔记

    摘要:入门和学习笔记概述框架的核心有两个容器作为超级大工厂,负责管理创建所有的对象,这些对象被称为。中的一些术语切面切面组织多个,放在切面中定义。 Spring入门IOC和AOP学习笔记 概述 Spring框架的核心有两个: Spring容器作为超级大工厂,负责管理、创建所有的Java对象,这些Java对象被称为Bean。 Spring容器管理容器中Bean之间的依赖关系,使用一种叫做依赖...

    wenyiweb 评论0 收藏0
  • Java后端

    摘要:,面向切面编程,中最主要的是用于事务方面的使用。目标达成后还会有去构建微服务,希望大家多多支持。原文地址手把手教程优雅的应用四手把手实现后端搭建第四期 SpringMVC 干货系列:从零搭建 SpringMVC+mybatis(四):Spring 两大核心之 AOP 学习 | 掘金技术征文 原本地址:SpringMVC 干货系列:从零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 评论0 收藏0
  • 慕课网_《Spring入门篇》学习总结

    摘要:入门篇学习总结时间年月日星期三说明本文部分内容均来自慕课网。主要的功能是日志记录,性能统计,安全控制,事务处理,异常处理等等。 《Spring入门篇》学习总结 时间:2017年1月18日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://git...

    Ververica 评论0 收藏0

发表评论

0条评论

mindwind

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<