Spring——是什么?作用?内容?用到的设计模式?

简介: 框架: Spring作为Java企业级应用的开发框架,在spring衍生出来之前,struts、Herbert作为当时强大的框架,对于我们熟悉的三层它们分别作为了表现层和DAO层的角色,而spring出现之后解决了逻辑层和数据层的耦合问题,spring成为用来连接表现层和多层的一个身份,整合了当时主流的第三方框架,使软件变成了一个整体。并且衍生出了现在的springboot、springcloud框架,他们的底层都是以spring作为基础框架

什么是spring?


框架: Spring作为Java企业级应用的开发框架,在spring衍生出来之前,struts、Herbert作为当时强大的框架,对于我们熟悉的三层它们分别作为了表现层和DAO层的角色,而spring出现之后解决了逻辑层和数据层的耦合问题,spring成为用来连接表现层和多层的一个身份,整合了当时主流的第三方框架,使软件变成了一个整体。并且衍生出了现在的springboot、springcloud框架,他们的底层都是以spring作为基础框架


容器:原来我们创建对象是通过new的方式去进行创建,比方说new people( ),如果要给对象的属性赋值和读取的话是通过set或者get方式,而现在使用了spring之后,用户不用在自己手动的去进行new的操作。


内部的IOC(控制反转): 将对象的创建的权利交给第三方Spring容器进行统一管理(不把对象的创建写死在类里面)。


DI(依赖注入): 为Spring容器中对象的属性赋值, 一般对象中的属性以接口最为常见 注入方式: a.set注入 b.构造注入


spring的底层使用了反射技术,通过反射这样的技术可以帮助在运行过程中动态地去获取类的属性和方法


通过AOP切面去完成,对业务方法进行扩展(松耦合)。常见应用:


  • a.事务控制(减少方法冗余, 解耦 - 不用在方法里面每次声明事务开始和事务提交)
  • b.日志记录
  • c.安全控制(AOP/拦截器都可以实现)
  • d.缓存机制
  • e.异常记录
  • f.记录程序运行的时间, 对方法进行分析优化


生态: Spring帮助去满足不同的需求,在spring内部也搭建了很多的框架类,这些框架类(并post Processor,并factory post processor)可以让用户自定义的去扩展,让用户按照自己的需求去搭建。正是因为底层使用了模板方法模式来帮助达到了这样一种扩展性,才能满足不同场景的一个需要


补充知识:视频:Spring的发展历史


spring是为了解决什么问题而衍生的?(历史)Spring解决了实际生产中的什么问题?


①、解决Java EE开发过程中的效率低问题。我们知道J2EE是为企业级的应用开发提供了一套严格的规范,这样一套规范在初期学习和使用的时候比较困难,对于大多数学习者来说内容不能一下子就理解,所以出现学习代价较高、开发效率较低等问题,Spring的出现就是帮助解决了这些问题使开发者开发更容易,J2EE在1999年和2000年开始的,Spring2002年紧接着就出现了。


②、我认为使用Spring框架的最大一个目的就是简化我们的开发(如何简化开发的?Spring提供了7大模块,每个模块可以相互组合应用)


spring包含了哪些部分?(组成)


dfbba856a773f292e69ea42af60f1a5c.png


  • Core:核心类库,提供了IOC服务
  • Context:应用上下文,提供框架式bean访问方式(要通过什么方式获取到容器提供的bean对象,如context.getbean就在其中)
  • AOP:面向切面编程(配置的切点就在里面)
  • DAO:对JDBC的抽象,简化了数据访问异常的处理
  • ORM:对象实体映射(只需要关注实体类就好,表里面有什么字段不需要关心,配置好之后会自动把表里的字段转换成对象的实体属性值)
  • Web:提供了基本的面向web的综合特性,例如多方文件上传、请求处理等都在里面
  • MVC:提供面向Web应用的Model-View-Controller实现。包含了mvc设计思想


Spring的特点是什么?


轻量级,不依赖其他组件,可以单独使用


可以解决企业应用开发的复杂性(???)


核心:IOC、AOP


  • IOC:控制反转,把创建对象过程交给spring进行管理
  • AOP:面向切面编程,不修改源代码进行功能增强


spring框架中用到了哪些设计模式?


此处列举框架中个别地方用到的设计模式,不代表全面!!


单例模式:bean默认都是单例的


原型模式:指定作用域为prototype


工厂模式:BeanFactory


模板方法:postProcessBeanFactory,onRefresh,initPropertyValue


策略模式:XmlBeanDefinitionReader,PropertiesBeanDefinitionReader


观察者模式:listener,event,multicast


适配器模式:Adapter


装饰者模式:BeanWrapper


责任链模式:使用aop的时候会先生成一个拦截器链


代理模式:动态代理


委托者模式:delegate


Spring相关依赖(此处只列举了一部分)


<!--        spring context-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.3</version>
        </dependency>
        <!--        spring jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.0.4</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <!--        德鲁伊连接依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>
        <!--        @Resource注解-->
        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
            <version>2.1.1</version>
        </dependency>
        <!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>


jar包下载


下载地址:


JFrog

https://repo.spring.io/ui/native/release/org/springframework/spring/


里面包含了很多版本,大家可以结合自己的需求进行下载:


04540e3ed56a9ce5b40dfd9a8e9aff63.png


下载之后结果如下:


里面包含了我们常需要使用的aop、core、beans等等jar包,我们在项目中使用的时候直接引入即可。


3b563341e67a4aaecda6f7bbe866bf0b.png


此图为idea引入结果:


b1dc658d0c794a19b5dd00eb6f699ca0.png


Spring系列文章:


Spring——Bean管理-xml方式进行属性注入


Spring——Bean管理-注解方式进行属性注入


Spring——什么是IOC?


Spring——AOP是什么?如何使用?


Spring——什么是事务?传播行为?事务隔离级别有哪些?


Spring——整合junit4、junit5使用方法


如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞+收藏脚印支持一下博主~

相关文章
|
1天前
|
设计模式 存储 Java
手写spring第二章-运用设计模式编写可扩展的容器
手写spring第二章-运用设计模式编写可扩展的容器
7 0
|
9天前
|
设计模式 Java 数据库连接
Spring Framework 6 中的设计模式
Spring Framework 6 中的设计模式
21 1
|
30天前
|
设计模式 Java 数据库连接
9种设计模式在Spring中的运用
9种设计模式在Spring中的运用
74 0
|
设计模式 Java 数据库连接
Spring设计模式(一)
Spring设计模式(一)
|
6月前
|
设计模式 缓存 Java
Spring 框架中都用到了哪些设计模式
Spring框架采用了多种设计模式来实现自己的功能,这主要是为了解决一些常见的软件开发问题。以下是一些Spring框架中使用设计模式的原因:
30 0
|
3月前
|
设计模式 Java Spring
Spring5深入浅出篇:Spring工厂设计模式拓展应用
Spring5深入浅出篇:Spring工厂设计模式拓展应用
|
3月前
|
设计模式 Java Spring
Spring5深入浅出篇:Spring与工厂设计模式简介
Spring5深入浅出篇:Spring与工厂设计模式简介
|
4月前
|
Java 应用服务中间件 数据库连接
太厉害!Redis+Nginx+设计模式+Spring全家桶+Dubbo技术精选合集
最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多bb了,直接上干货!
|
6月前
|
设计模式 Java Spring
Spring框架中使用了那些设计模式
Spring框架中使用了那些设计模式
25 0
|
6月前
|
设计模式 前端开发 Java
JAVA设计模式第七讲:设计模式在 Spring 源码中的应用
JAVA设计模式第七讲:设计模式在 Spring 源码中的应用