JAVA学习路线之:Spring从懵逼到精通——Sping架构\依赖注入\应用切面

16 篇文章 0 订阅
10 篇文章 0 订阅

关于Spring

Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。学习Spring是基础课程。但是大多数同学都只知其然但是不知其所以然。在这里我们就系统的来说一下Spring的点点滴滴吧。今天作为第一讲,就来聊聊Spring到底做了啥。让大家从懵逼的状态下开始我们的Spring之旅。

在这里插入图片描述

Spring能够激发POJO的潜能

很多框架通过强迫应用继承他们的类或者实现它们的接口从而导致应用与框架绑死。一个典型的例子就是EJB的无状态Session Bean。早期的EJB就是这样的框架。

而在这方面Spring就做的很好。Spring竭力避免因为自身的API而弄乱你的代码。Spring不会强迫你实现Spring规范的接口或者继承Spring规范的类。

在基于Spring构架你的应用中,它的类通常没有任何痕迹表明你使用了Spring。最差情况就是一个会使用Spring注解的类。仅此而已。

Spring在对于POJO实行增强的方法就是用DI来装配他们。

欢迎各位大佬进群共同交流学习,我们的交流分享群:1149778920 暗号:CSDN
博主在这里给大家整理了包括但不限于:JAVA基础和进阶类、Spring、Spring boot、Spring MVC、MyBatis、MySQL、JVM等各种资料有,免费分享给各位进群的小伙伴

在这里插入图片描述

Sping架构

Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定。大约有20多个模块。

在这里插入图片描述
在这里插入图片描述

Spring3与Spring4是有区别的,4.0主要是对Java 8的新函数式语法进行支持,还有加强了对网络各种新技术比如http-streaming, websocket的更好的支持。

一般来说,Spring主要分为7个模块:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

依赖注入(DI)

依赖注入听起来很复杂。但是目前已经成为一个设计模式理念。在项目中使用DI的模式之后你会发现代码变得异常简单并且容易理解和测试。

DI的实现:任何一个有意义的应用都会由两个或者更多的类组成,这些类相互之间进行写作来完成特定的业务逻辑。传统的做法是:每个对象负责管理与自己相互写作的对象的引用。DI的做法是:对象的依赖关系由系统中负责协调个对象的第三方组件在创建对象的时候进行设定。对象无需自行创建或者管理他们的依赖关系。依赖关系将被自动注入到需要他们的对象中。

在这里插入图片描述
DI带来的最大收益就是——松耦合。如果一个对象只通过接口来表明依赖关系,这种依赖就能够在对象本身毫不知情的情况下,用不同的具体实现进行替换。

对依赖进行替换的最常用方法就是在测试的时候是用mock来实现。

创建应用组件之间的写作的行为通常我们成为装配(wiring)。Spring有多种装配bean的方式。可以使用XML来进行装配。如果XML的配置不符合你的喜好,Spring还可以是用Java来描述配置文件。只要在Java代码中打上@Configuration 和@Bean的标签即可。

不管是使用基于XML的配置还是基于Java的配置,DI带来的收益都是一样的。

Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来。Spring应用上下文全权负责对象的创建和组装。Spring自带了多种应用上下文的实现,它们之间主要的区别仅仅是还在于如何加载配置。

应用切面(AOP)

DI能够让相互协作的软件组件保持松散耦合,而面向切面变成(AOP)允许你把遍布应用的各处的功能分离出来形成可重用的组件。

面向切面编程是为了促使软件系统实现关注点的分离的技术。系统由许多不同的组件组成,每个组件各负责一块特定功能。除了实现自身核心的功能之外。这些组件还经常承当额外的职责。例如:日志、事务管理和安全这样的功能。这些功能可以被称为是关注点。

在这里插入图片描述

实现系统关注点功能的代码将会重复出现在多个组件中。* 组件会因为那些与自身核心业务无关的代码变得混乱。* AOP的作用就是使得这些服务模块化,并且以声明的方式将它们应用到它们需要影响的组件中去。所造成的结果就是使得这些组件会具有更高的内聚性并且会更加关注自身的业务,完全不用了解涉及系统服务所带来的复杂性。

在这里插入图片描述

在编码时候经常遇到为了实现通用的和简单的任务,不得不一遍遍的写的重复的代码,称之为样板方的代码。比如JDBC就会有一大堆的样本式的代码。

JDBC也不是产生样板式代码的唯一场景。在许多编程场景中都有类似的样板式代码,JMS、JNDI等也会大量的重复的代码。

Spring通过模板封装来消除样板式代码。Spring的JdbcTemplate就使得执行数据库操作时不使用样板式代码成为了可能。

最后

这一节简单介绍了Spring,没涉及到原理的东西。Spring如此博大精深,希望大家好好学习哈。

我特意整理了一下,里面的技术不是靠几句话就能讲清楚,多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然。如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以加我的Java进阶群1149778920 暗号:CSDN
以下是部分资料截图(所有资料均已整合成文档,pdf压缩打包处理)。

在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值