资讯专栏INFORMATION COLUMN

Spring框架之我见(三)——IOC、AOP

khs1994 / 1785人阅读

摘要:模块负责的所有面向切面的功能。总结的统一管理,降低了对象之间的耦合对主流的框架提供了很好的集成支持提供众多组件,事务管理,等具有高度可开放性,开发者可以自由选择部分或全部主要使用工厂模式和代理模式。

聊完了Spring框架中最重要的两种设计模式,我们来看一下Spring框架的模块和结构图。
Spring框架的结构

下图是Spring官方给出的Spring框架的结构图。

从图中我们可以看到Spring的四大部分:核心容器(container)、AOP模块、Web模块、Data模块。

首先看核心容器,从核心俩字我们可以看出,这是Spring最重要的部分。主要的功能是实现了控制反转(IOC)与依赖注入(DI)、Bean配置、加载以及生命周期的管理。

AOP模块:负责Spring的所有AOP(面向切面)的功能。

Web模块:扩展了Spring的Web功能。使其符合MVC的设计规范,最重要的是提供了Spring MVC的容器。

Data模块:提供了一些数据相关的组件:包括JDBC、orm(对象关系映射)、事务操作、oxm(对象xml映射)、Jms(Java消息服务)。

我们可以看到Spring给我们提供的模块相当的丰富,无论是持久层业务层还是控制层都有所涉及。

Spring几乎包揽除了业务逻辑之外的的所有工作,包括日志管理、事务管理、Bean管理、安全管理等。

Spring致力于全套的Java问题的解决方案,在所有的Java可以涉足的领域,Spring都会提供相应的支持。(即使没有支持,也会让我们去整合)

与第三方框架的整合。在我的理解中Spring框架就像一个插线板,而第三方框架就相当于插头,可以轻易地与它组合在一起。需要的时候就插上去,不需要的时候就拔掉,相当的方便。

既然Spring如此的方便,那么它又是如何做到的呢?

很简单,通过两点:

控制反转(IOC)

面向切面编程(AOP)

控制反转(IOC)/依赖注入(DI)

既然说到控制反转,那么我们不禁要问什么控制被反转了?
答案是:我们对对象的控制权被反转了。我们将对象的控制交给了Spring的容器

那么问题又来了,什么是Spring的容器?
简单的说,Spring容器就是一个超级大工厂,负责创建、管理所有的Java对象,这些Java对象被称为Bean。Spring容器管理着容器中Bean之间的依赖关系,Spring使用一种被称为“依赖注入”的方式来管理Bean之间的依赖关系。

什么又是依赖注入呢?
依赖注入(DI)就是控制反转的一种实现形式,Spring容器也是通过这种形式管理Bean的。

Spring容器如何做到替你管理这些bean的呢?
工厂模式。

Spring框架费了九牛二虎之力创建一个Spring容器去帮我们管理这些Bean又有什么好处呢?
其实和工厂模式的好处差不多:

解除硬编码耦合,利于项目升级和维护;

简化了对象的管理,使我们更加专注于业务操作;

聊完了控制反转我们再来看看Spring框架的另一项关键技术AOP。

面向切面编程(AOP)

什么是面向切面编程?

面向切面编程:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。

这句话读完估计跟没读没什么区别,还是没懂。下面我们来看一张图:

从图中我们可以看出:我们每写一个业务功能,都需要判断权限、记录日志、提交事务、这些逻辑是不是都是重复的呀,这相当于什么呢?相当于我们前面说的脏活累活,这都不是我们的重点,我们的重点是业务逻辑,就是说我们需要把整体框架搭好,实际编写的时候只需要将我们的业务代码切入到框架之中,就行了。

原理:代理模式。

为什么需要AOP?
AOP专门用于处理系统中分布于各个模块或者不同方法中的交叉关注点的问题。比如:在程序中,我们常常需要处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,AOP是一种非常常用的解决方案。

面向切面编程对我们来说有什么好处?

减少重复;

专注业务;

注意:面向切面编程只是面向对象编程的一种补充。

讲了这么多我们来对Spring框架做一个总结。

Spring 总结

Bean的统一管理,降低了对象之间的耦合

对主流的框架提供了很好的集成支持

提供众多组件,事务管理,JDBC等

具有高度可开放性,开发者可以自由选择Spring部分或全部

主要使用工厂模式和代理模式。

低侵入,代码污染极低。(我们不会因为用了spring而影响我们的正常的业务逻辑)

AOP的很好支持,方便面向切面编程(AspectJ)。

下一节,我们将讨论Spring框架在WEB开发的应用Spring MVC。

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

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

相关文章

  • Spring框架我见(四)——Spring MVC

    摘要:是结构在框架中的一种表现形式。这句话听起来有点绕,我们可以看一下下面这张图,大家可以吧容器中的理解为全局变量,吧容器中的理解为局部变量。在方法体中可以访问局部变量和全局变量,但是在方法外,就只能访问全局变量,是不能访问局部变量的。 聊完了Spring,我们来看看Spring在web方面的应用Spring MVC。 MVC 首先我们来看什么是mvc? 大家知道在jsp里面也是可以写jav...

    shiina 评论0 收藏0
  • Spring框架我见(五)——Spring Boot

    摘要:通过我们可以更轻松地入门,更简单的使用的框架。团队为了摆脱框架中各类繁复纷杂的配置,使用约定优于配置的思想,在基础上整合了大量常用的第三方库的开发框架。这里还要说的一点,的出现并不是单纯的为了简化开发,更是为做铺垫。 说完了Spring 我们来聊聊Spring的进阶版Spring Boot,如果你还不知道Spring Boot,那希望这篇文章能够为你指明方向。 Spring Boot ...

    张巨伟 评论0 收藏0
  • Spring框架我见(二)——代理模式

    摘要:聊完了工厂模式,下面我们来说框架中的另一个核心设计模式代理模式。这里的外卖小哥就相当于是我们的代理。主要分为代理和代理。 聊完了工厂模式,下面我们来说Spring框架中的另一个核心设计模式——代理模式(Proxy Pattern)。 代理模式 大家可以先不用看概念,先举个吃饭的例子:比如说我们想吃饭,我们可以选择自己做饭吃、去饭店吃、叫外卖吃。如果我们选择自己做着吃,我们就需要去买菜、...

    oneasp 评论0 收藏0
  • Spring框架我见(一)——工厂模式

    摘要:相对于工厂模式,抽象工厂模式生产的对象更加具体,也更加丰富,但相对编码也更加复杂。具体的抽象工厂模式的实现大家可以参考菜鸟教程。知道了工厂模式和抽象工厂模式的区别,请大家使用的时候应该根据具体的情况进行选择。 大家好,今天给大家分享一些Spring的学习心得,在讲Spring之前,先和大家分享Spring中核心的设计模式。 工厂模式 在聊概念之前我先问问大家:什么是工厂? 这个很简单,...

    venmos 评论0 收藏0
  • Spring框架我见(六)——Spring Cloud

    摘要:系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。传统架构升级困难。新的轻量级协议容器化的出现。熔断处理在微服务出现问题时防止出现雪崩效应。 聊完Spring Boot,我们来看看Spring Boot最重要的一方面的应用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我们先聊聊微服务。 ...

    alighters 评论0 收藏0

发表评论

0条评论

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