Spring5系列(一) | 重新认识下spring

简介: Spring5系列(一) | 重新认识下spring

Spring - 这应该是java程序员不可逾越的一座大山,无论在开发或者面试中都无法绕过去的坎,毫不夸张的说,spring目前已经占据了java领域的半壁江山,甚至更多,而目前spring也已经更新到了5.x的版本。同时,随着springboot, springcloud等一系列微服务框架的诞生,spring也变得越来越流行,越来越广泛,越来越简便。 但简便的同时,其实是对底层大部分功能的封装,而如果我们不能很好的理解spring的基础用法,等到后面使用springboot,springCloud等进行大量的注解开发的时候,就会发现,很多东西理解的不够全,很多代码甚至看不懂。


恰巧最近有幸在B站上看了孙帅讲的spring课程,觉得大有所获,因此也想借着这个机会,把在课程上学习的内容整理出来,分享给更多的人,所以本系列中的大量案例都会参照孙帅老师的课程内容进行展开,如果没有听过孙帅老师课程的也强烈建议去听一些,讲的确实好,文末有链接地址。


一. 什么是spring

spring是一个java领域的开源框架,通过spring容器的概念,管理整个应用程序中所有的bean的生命周期和依赖关系,从而降低了程序中的耦合度。 spring体系本身包含很多个模块内容,目前文中所提到的spring,指的是springframework这个框架,除此之外,还包含springboot, springcloud,spring data ,spring security等项目模块,目前最新的版本是5.3.5

AOP的主要作用就是简化我们的开发过程 主要通过对pojo类的控制做到低侵入的编程模式,通过IOC和接口实现松耦合,基于切面做声明式编程,将复杂公共模块切面化,可配置,大大提高代码的复用性。

spring的官网地址: spring.io

github地址:github.com/spring-proj…

二. spring整体架构

spring框架是一个分层架构,包含一系列的功能要素,如下图

image.png

而spring中最核心的两大块功能我想大家肯定听说过,一个是IOC, 一个是AOP

三. IOC

IOC这个概念我想大家肯定都听说过,面试中也会经常被问到。那么到底什么是IOC呢,我们斗胆来分析一下。


IOC:  Inversion of Control 的一个缩写, 翻译成中文是控制反转的意思。说实话,乍一听还是很抽象的,我想至少中国人应该很少会这么表达。与此同时,还有一个概念叫DI: Dependency inject,就是依赖注入的意思,很多人说这两个概念在spring中是一个含义,但我认为还是有一定的区别的,那么接下里我们来探讨写到底什么是IOC和DI.

IOC: 叫做控制反转,到底控制了什么,又反转了什么。先看下个案例,我们在没有spring的时候如果想给对象赋值,往往是通过下面这种形式。

Useruser=newUser();
user.setId(1);
user.setName("张三");
复制代码

而有了spring之后,springJ就可以帮我们处理这一切,写法如下:

<beanid="user"class="com.xxx.User"><propertyname="id"><value>10</value></property><propertyname="name"><value>xyz</value></property></bean>复制代码

这个时候,对象的创建和赋值,就不需要我们自己完成了,而是交给了spring工厂,这样就实现了代码的解耦(这个概念比较大,后面详述),所以所谓IOC: 控制反转,我们控制的就是对成员变量进行复制的控制权,反转是把对象对成员变量的控制权从代码反转到了spring工厂。这样做的好处就是解耦合。而依赖注入,其实就是通过spring实现对成员变量赋值的过程。

四. AOP

Spring中的第二大核心功能就是AOP: 那么什么是AOP,这个我想大多数人肯定都能答出来,没错,就是面向切面编程(Oriented Aspect programing),通过spring的AOP编程,我们可以更简单的实现事务的声明式管理,及公共开发切面的程序集成。这个也是一个比较抽象的概念,我们会在后面的程序中做详细的讲解。

五. 总结

好了,作为一个抛砖引玉的章节,关于spring的介绍就大致说这么多。后边我们会一步一步深入的学习里边的内容。同时给大家介绍一下讲解思路,我们还是会先从原始的xml配置方式开始讲解spring中的一些特性,不会一下子给大家上注解,后面了解了里面的原理后,我们会进一步剖析注解的用法,以及他和xml配置的比较。好了,敬请期待后面的内容吧。如果喜欢我的内容,希望多多三连支持。谢谢大家。


附录: 参考资料

孙帅spring详解:www.bilibili.com/video/BV185…

spring概述: zhuanlan.zhihu.com/p/107744875

目录
相关文章
|
5月前
|
运维 Java 程序员
Spring5深入浅出篇:Spring切入点详解
该文档是关于Spring框架中切入点的详细解释。切入点是AOP(面向切面编程)的核心概念,用于定义通知(如日志、事务管理)应该附加到代码的哪些位置。文档主要介绍了切入点表达式的不同类型: 1. 方法切入点表达式:使用`execution()`定义匹配的方法,星号`*`代表任意返回值和方法名,`(..)`表示任意参数。 2. 类切入点:指定特定类以应用额外功能,可以精确到类中的所有方法,或者只包含特定包的类。 3. 包切入点表达式:适用于整个包或包及其子包内的所有类和方法。
|
5月前
|
Java 关系型数据库 MySQL
Spring5深入浅出篇:Spring中的FactoryBean对象
Spring5深入浅出篇:Spring中的FactoryBean对象
|
5月前
|
XML Java Shell
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究Spring的核心注解开发和实现指南(Spring5的常见的注解)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究Spring的核心注解开发和实现指南(Spring5的常见的注解)
34 1
|
5月前
|
运维 Java 程序员
Spring5深入浅出篇:Spring动态代理详解
# Spring动态代理详解 本文探讨了Spring中的MethodBeforeAdvice和MethodInterceptor在动态代理中的应用和差异。MethodBeforeAdvice在方法执行前执行额外功能,而MethodInterceptor则可在方法执行前后或抛出异常时运行额外逻辑。MethodInterceptor还能影响原始方法的返回值。
|
2月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
5月前
|
设计模式 前端开发 Java
玩转Spring—Spring5新特性之Reactive响应式编程实战
玩转Spring—Spring5新特性之Reactive响应式编程实战
199 0
|
2月前
|
XML Java Maven
Spring5入门到实战------16、Spring5新功能 --整合日志框架(Log4j2)
这篇文章是Spring5框架的入门到实战教程,介绍了Spring5的新功能——整合日志框架Log4j2,包括Spring5对日志框架的通用封装、如何在项目中引入Log4j2、编写Log4j2的XML配置文件,并通过测试类展示了如何使用Log4j2进行日志记录。
Spring5入门到实战------16、Spring5新功能 --整合日志框架(Log4j2)
|
2月前
|
Java API Spring
Spring5入门到实战------1、Spring5框架概述、入门案例
这篇文章是Spring5框架的入门教程,概述了Spring框架的核心概念和特点,并通过一个创建普通Java类的案例,详细演示了从下载Spring核心Jar包、创建配置文件、编写测试代码到运行测试结果的完整流程,涵盖了Spring IOC容器的使用和依赖注入的基本用法。
|
5月前
|
设计模式 运维 Java
Spring5深入浅出篇:Spring中静态代理与动态代理
Spring框架中的代理模式分为静态代理和动态代理。在JavaEE分层开发中,Service层最为重要,包含核心业务逻辑和额外功能。静态代理通过手动创建代理类来增加原始类的额外功能,但当代理类数量多时管理不便且不易于维护。动态代理则解决了这一问题,通过Spring的AOP(面向切面编程)实现,无需手动创建代理类,只需定义切点和增强(额外功能),在运行时动态生成代理对象,提高了代码的灵活性和可维护性。动态代理主要利用了JVM的字节码技术,在运行过程中创建代理类,执行完毕后随着虚拟机的结束而销毁,不会产生持久化的代理类。
|
5月前
|
Java 数据库连接 Spring
Spring5深入浅出篇:Spring配置⽂件参数化
该文档介绍了Spring配置文件参数化的概念和步骤。目的是将经常需要修改的配置,如数据库连接参数,从主配置文件中分离到一个单独的`.properties`文件,以便于管理和维护。步骤包括创建小型配置文件(如`db.properties`),在`applicationContext.xml`中引入该文件,并使用`${key}`语法在Spring配置文件中引用这些参数。最终通过测试验证配置文件参数化的成功。