当前位置: 首页 > article >正文

【Spring】spring框架简介

一、框架

1.框架的基本特点:

  1. 框架(Framework),是基于基础技术之上,从众多业务中抽取出的通用解决方案;
  2. 框架是一个半成品,使用框架规定的语法开发可以提高开发效率,可以用简单的代码就能完成复杂的基础业务;
  3. 框架内部使用大量的设计模式、算法、底层代码操作技术,如反射、内省、xml解析、注解解析等;框架一般都具备扩展性;
  4. 有了框架,我们可以将精力尽可能的投入在纯业务开发上而不用去费心技术实现以及一些辅助业务。

2.Java中常用的框架:

不同语言,不同领域都有属于自己的框架,使用框架开发是作为程序员的最基础的底线。Java语言中的框架,可以分为基础框架和服务框架:

  • 基础框架:完成基本业务操作的框架,如MyBatis、Spring、SpringMVC、Struts2、Hibernate等
  • 服务框架:特定领域的框架,一般还可以对外提供服务框架,如MQ、ES、Nacos等

二、spring介绍

1.Spring框架概述

spring是一个开源的轻量级Java开发应用框架,可以简化企业级应用开发。Spring解决了开发者在JavaEE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。是当前企业中Java开发几乎不能缺少的框架之一。Spring的生态及其完善,不管是Spring哪个领域的解决方案都是依附于在Spring Framework基础框架的。

2.Spring框架的历史

  • Jsp 默默扛下所有;
  • MVC+三层架构分工明确,但开发成本及其高;
  • EJB重量级框架出现,走出一个困境,有进入另一个困境;
  • Spring春天来到,随之,SSH风生水起、称霸武林;
  • Spring 稳住江湖大哥位置,SSM开始上位;
  • Spring本着“拿来主义”的思维快速发展,生态不断健全;
  • SpringBoot又一里程碑崛起,把“约定大于配置“思想玩的炉火纯青;
  • SpringCloud打包了微服务众多解决方案,应对互联网项目更加easy!

3.Spring Framework技术栈图示

请添加图片描述

  • Data Access:数据访问
  • Data Integration:数据集成
  • Web:web开发
  • AOP:面向切面编程Aspects:AOP思想实现
  • Core Container:核心容器
  • Test:单元测试与集成测试

三、spring四大内容

在这里插入图片描述

1.loC基础容器

lnversion of Control,控制反转,强调的是原来在程序中创建Bean的权利反转给第三方。
Spring两大核心之一,其他组件功能的基础,主要涉及Bean产生和关系等。

(1)DI

Dependency Injection,依赖注入,强调的Bean之间关系,这种关系第三方负责去设置。

2.AOP面向切面编程

Aspect Oriented Programming,面向切面编程,功能的横向抽取,主要的实现方式就是Proxy。
Spring两大核心之一,用横向抽取思想对Bean进行增强,主要涉及切面配置、声明式事务控制等。

3.Spring整合web环境

Spring整合web的方式、原理和整合web层各个MVC框架的思想。

4.web层解决方案-SpringMVC

基于MVC思想打造的框架,摆脱Servlet,用更简单的方式开发web层代码。

四、传统Javaweb开发困惑及解决方案

问题一:层与层之间紧密耦合在了一起,接口与具体实现紧密耦合在了一起

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象

在这里插入图片描述

问题二:通用的事务功能耦合在业务代码中,通用的日志功能耦合在业务代码中

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象的代理对象
请添加图片描述


http://www.kler.cn/a/766.html

相关文章:

  • Ubuntu离线安装Docker容器
  • C/C++ 数据结构与算法【树和森林】 树和森林 详细解析【日常学习,考研必备】带图+详细代码
  • WSL2上Ubuntu22.04安装Docker
  • MyBatis的插件运行原理,与如何编写一个插件
  • 【扩展卡尔曼滤波理论推导与实践】【理论】【1/3 前言】
  • 关于埃斯顿机器人文件导出或者系统日志导出
  • Vite4 + Vue3 + vue-router4 动态路由
  • 【Linux】进程概念二
  • 实现 GPS 拒绝飞机导航的时间序列模型(Matlab代码实现)
  • 【Java注释】如何自定义注解以及JDK中的元注解
  • 你真的知道如何系统高效地学习数据结构与算法吗?
  • 五种IO模型
  • k8s快速入门
  • 响应式编程详解,带你熟悉Reactor响应式编程
  • 操作系统之进程的初步认识(1)
  • Vulnhub靶场----10、LazySysadmin
  • 文心一言发布我怎么看?
  • 18、江科大stm32视频学习笔记——USART串口发送串口发送和接收
  • 【2023-3-6】1. Nginx介绍及安装
  • Centos系统下载
  • 图解redis之链表的实现
  • 深度学习必备知识——模型数据集Yolo与Voc格式文件相互转化
  • Linux驱动开发
  • 【动态规划】不同路径,编辑距离题解及代码实现
  • Linux -- 磁盘存储管理 分区工具 parted
  • 硬刚ChatGPT!文心一言能否为百度止颓?