SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别

news2025/1/24 15:54:30

目录

JAVA

框架

javaEE

spring

springmvc

springboot

SSM

SSH

maven


JAVA

  • 一种面向对象、高级编程语言,Python也是高级编程语言;
  • 不是框架(框架:一般用于大型复杂需求项目,用于快速开发)
  • 具有三大特性,所谓Java编程也始终是围绕三大特性进行的
  • Java提供了基本的语言特性和类库,可以在各种操作系统和硬件平台上运行
  • 目前互联网大小厂等绝大部分都在使用Java进行企业级开发(少部分也有用Python的)

框架

  • 什么是框架

    所谓框架,其实就是一个半成品的软件项目,是一个可复用的设计构件。我们可以在这些半成品的基础之上,来开发我们自己的应用

javaEE

  • Java EE是Java平台的一个扩展,一种框架,专门用于开发企业级应用程序。Java EE适用于开发大型、分布式、可扩展的企业级应用程序,如企业级Web应用
  • 提供了分布式计算、事务处理、安全性等一系列企业级功能(Java本身不提供Java EE中的企业级功能和组件,但它可以用于开发这些功能,尽管这不是最常见的使用方式。)
  • Java EE包括EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、JMS(Java Message Service)等组件,支持Web应用程序和分布式系统的开发。
  • 与Java区别:Java EE需要使用Java编程语言进行开发,但Java编程语言并不一定要用于开发Java EE应用程序
  • 适用场景: javaee适用于企业级应用程序‌

spring

  • 一种用于构建企业级Java应用程序的开源应用程序框架,Spring自2002年诞生至今,已有近20年的历史. Spring 致力于 JavaEE 应用各层的解决方案(表现层、业务逻辑层、持久层,但 Spring 并不是要取代那些已有的优秀框架,而是可以高度开放的与其它优秀框架无缝整合)
  • Spring 是一个分层的 full-stack(一站式)轻量级框架,以 Ioc(Inversion of Control,控制反转)和  AOP(Aspect Oriented Programming,面向切片编程)为内核,使用简单的 JavaBean 来完成以前只能由 EJB(Enterprise Java Beans)完成的工作,取代了臃肿、低效的 EJB。

  • 降低了使用 JavaEE API 的难度。Spring对JavaEE开发中难用的一些API进行了封装,降低了这些API的使用难度。

  • 用于开发Java应用程序的各个方面,包括依赖注入(Dependency Injection)、面向切面编程(Aspect-Oriented Programming)、事务管理、数据访问、Web开发等

对比普通的java程序与Spring 中创建对象:

普通的Java程序:开发者需要使用关键字new显式地在代码中创建和初始化对象。 List list = new ArrayList();

在Spring框架中,对象的创建由Spring容器负责。开发者只需在配置文件或使用注解的方式中声明对象的依赖关系,Spring容器会根据配置信息自动创建和管理对象的生命周期。

  • Spring简化了应用系统的开发,IoC和AOP是它的两大核心理念。IoC容器用来管理组件和注入依赖,AOP进一步降低了模块的耦合性,提高了重用性和开发效率。

  • 很容易和其他库整合,如与数据库处理的相关框架mybatis整合

  • JavaEE框架与Spring框架的对比

相同点: 都是流行的用于Java开发的框架

不同点对比:

JavaEE适用于大型企业级应用程序,而Spring更适合轻量级、灵活的应用程序

    依赖项

    • JavaEE依赖于JEE规范(如EJB、JPA等),需要服务器支持。
    • Spring是一个轻量级的框架,依赖较少,可以在非JEE环境中使用。

    复杂性

    • JavaEE的模块化架构可能使其更复杂,尤其是对于大型应用程序。
    • Spring的IoC容器简化了应用程序开发,使其更容易管理复杂性。

    性能

    • JavaEE通常比Spring更快,因为它基于更稳定的规范。
    • 对于小型应用程序,Spring的性能足以满足大多数需求。

    • Spring框架具有以下核心特点

    轻量级:Spring框架采用了轻量级的设计思想,它不依赖于庞大的第三方库或容器。Spring的核心库非常精简,只提供了基本的功能和特性,使得应用程序可以快速启动和运行。

    控制反转(IoC)和依赖注入(DI):Spring框架通过依赖注入实现了对象之间的松耦合。开发者无需自己管理对象的创建和组装,而是通过配置或注解的方式,由框架负责将依赖关系注入到对象中。这种松耦合的设计使得代码更具可测试性、可维护性和可扩展性

    面向切面编程(AOP):Spring框架提供了对面向切面编程的支持。AOP允许开发者在不修改原有代码的情况下,通过定义切面来插入横切关注点,例如日志记录、事务管理等。这种机制提高了代码的模块化和重用性,同时将核心业务逻辑与横切关注点分离开来。

    容器管理:Spring框架提供了一个容器(ApplicationContext)来管理应用程序中的对象。容器负责创建、配置和管理对象的生命周期,包括依赖注入、对象的初始化和销毁等。通过容器的管理,开发者可以更方便地管理和组织应用程序的组件。

    综合的解决方案:Spring框架提供了一系列的模块和工具,涵盖了各个方面的应用开发需求。例如,Spring MVC用于构建Web应用程序,Spring JDBC用于简化数据库访问,Spring Security用于身份验证和授权等。这些模块能够根据项目的需求进行选择和集成,提供了一套综合的解决方案。

    高度可扩展:Spring框架具有高度的可扩展性,开发者可以通过扩展或自定义各种组件来满足特定的需求。Spring提供了扩展点和插件机制,使得开发者可以根据项目的要求进行定制和扩展,而无需改变框架的核心代码。

    springmvc

    • Spring MVC(Model-View-Controller)是Spring框架中的一部分,用于构建基于Java的Web应用程序
    • 是一个基于MVC设计模式的Web框架,提供了一种结构化的方式来开发Web应用程序,使开发人员能够更好地管理请求、处理逻辑和呈现视图。
    • 与spring的关系:Spring MVC是Spring框架的一部分,SpringMVC是Spring框架中的一个子模块,所以SpringMVC和Spring整合时更加简单,配置也更加容易。
    • SpringMVC的缺点

      servlet API耦合难以脱离容器独立运行(为了运行代码,必须安装web容器)

      太过于细分,开发效率低(比如,bean需要挨个配置)

    • 核心组件

    注:为了解耦,通常又把中间件划分为三层 即:表现层(控制层),业务逻辑层,数据访问层

    Model(模型,简单理解为逻辑处理):模型代表应用程序的数据和业务逻辑。它可以是POJO(Plain Old Java Object)或者通过持久化框架与数据库交互。模型通常包含应用程序的状态和数据,以及处理这些数据的方法。
    View(视图,简单里面为页面):视图负责呈现模型的数据给用户。它可以是一个JSP页面、Thymeleaf模板、HTML页面或其他类型的视图技术。视图负责展示数据给用户,并与用户进行交互。
    Controller(控制器,简单理解为提供http(s)接口):控制器是模型和视图之间的协调者。它接收用户的请求,并根据请求的内容选择适当的模型和视图进行处理。控制器通常包含处理请求的方法,可以通过注解或配置进行映射。

    springboot

    • 一个用于简化和加速基于Spring框架的应用程序开发的开源框架
    • 与Java的关系: 一种全新的框架(Java程序课程设计时也可以用springboot,但属于“杀鸡焉用牛刀”)
    • 与spring的关系:Springboot是建立在Spring框架之上的(简单理解为,springboot ~= spring + springmvc + web服务器 等等) 

     SpringMVC是基于spring的一个MVC框架。

     springboot的基于spring的条件注册的一套快速开发整合包

    • 与springmvc的关系

    1、Spring MVC是Spring框架的一部分,而Spring Boot则是建立在Spring框架之上的。Spring Boot可以与Spring MVC一起使用,以简化Spring MVC应用程序的配置和部署。
    2、Spring Boot内置了Tomcat、Jetty等Web服务器,因此可以直接运行Spring MVC应用程序,无需手动配置和部署外部服务器。
    3、Spring Boot提供了自动配置机制,可以根据应用程序的依赖和配置情况,自动配置Spring MVC的相关组件和功能(大大减少了选项配置),简化了配置过程。
    4、Spring Boot还提供了许多与Web开发相关的功能和插件,例如Spring Boot Starter Web,用于自动配置Web开发所需的依赖项。

    二者区别:

    1、Spring Boot是一个全新的框架,旨在简化Spring应用程序的开发和部署,提供了自动配置、内嵌服务器等特性。而Spring MVC是Spring框架的一部分,专注于构建Web应用程序。
    2、Spring Boot关注于整个应用程序的配置和部署,提供了一种约定优于配置的方式,使得开发者可以更快地开发应用程序。而Spring MVC关注于处理Web请求和响应,提供了一种基于MVC模式的架构。
    3、Spring Boot可以与Spring MVC一起使用,但它并不局限于Spring MVC,也可以与其他Spring模块(如Spring Data、Spring Security等)以及第三方库进行集成。
    4、Spring Boot提供了许多开箱即用的功能和插件,使得开发人员可以更专注于业务逻辑的实现,而Spring MVC则提供了一套Web开发的基础架构和规范

    • 提供了一个约定大于配置的方式,旨在最小化开发人员在配置方面的工作量,提高开发效率。

    约定大于配置:

            传统的软件开发往往需要大量的配置文件和手动配置步骤,开发人员需要详细配置各种参数和选项,以满足应用程序的需求。这种方式需要开发人员具备熟练的配置技能,并且容易出现配置错误和冲突。比如,springmvc 开发时需要多个配置文件,极其容易出错,而且程序部署时需要web容器如tomcat来部署运行。

            约定大于配置的方式则通过事先定义一些默认约定和规则,使得开发人员可以遵循这些约定而不需要进行显式的配置。这样可以大大简化配置的过程(配置文件数量大大减少了,Spring Boot提供了一系列的默认约定和自动配置机制,开发人员只需要按照这些约定编写代码和组织项目结构,就能够快速启动应用程序,无需手动配置大量的Spring选项),减少出错的可能性(如:版本冲突大大减少了),并提高开发效率。例如,Spring Boot默认约定了一些常见的目录结构,如将应用程序的主类放置在特定的包路径下,将静态资源放置在特定的目录下等。此外,Spring Boot还提供了自动配置,根据应用程序的依赖和环境,自动配置Spring的各种组件和功能,减少了手动配置的工作量。

    传统方式:
    在传统的Web开发中,配置一个URL映射到一个处理方法通常需要进行显式的配置。比如,在Java Servlet中,需要在web.xml配置文件中添加以下内容:

    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    在Spring Boot中,可以在一个普通的Spring MVC控制器中定义一个处理方法,并使用@RequestMapping注解指定URL映射路径。示例如下:

    @Controller
    public class MyTestController {
        @RequestMapping("/hello")
        public String hello() {
            return "Hello, World!";
        }
    }

    • 与spring的区别

    (1)springboot可以建立独立的spring应用程序。

    (2)内嵌了如tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再做部署工作。

    (3)无需再像spring那样写一堆繁琐的XML配置文件

    (4)可以自动配置spring

    (5)提供的POM可以简化maven的配置

    • Spring Boot 的优点

    简化开发:Spring Boot通过约定大于配置的原则,提供了默认的配置和自动配置机制,大大简化了开发过程。开发人员可以专注于业务逻辑的实现,而无需花费过多时间和精力在繁琐的配置上。(代码少了、配置文件少了、不需要对第三方框架烦恼了、项目精简了,对整个团队的开发和维护来说,更大的节约了成本。)
    快速启动:Spring Boot提供了快速启动的能力,开发人员可以快速地启动和运行应用程序,减少了构建和部署的时间。它内置了常用的Servlet容器,可以将应用程序打包为可执行的JAR文件,直接在内嵌容器中运行。
    自动装配:Spring Boot 提供了自动装配机制,根据应用程序的依赖关系和配置信息,智能地自动配置 Spring 的各种组件和功能,大大减少了开发人员的手动配置工作,提高了开发效率。
    开箱即用:Spring Boot集成了许多常用的功能和组件,如安全性、数据库访问、缓存、消息队列等。这些功能都是开箱即用的,开发人员可以直接使用,无需手动集成和配置。这大大简化了开发过程,加快了应用程序的开发速度。
    自动化依赖管理:Spring Boot通过自动化依赖管理,简化了依赖库的引入和版本管理。它提供了起步依赖(Starter)的概念,开发人员只需添加相应的起步依赖,Spring Boot会自动适配依赖的版本和配置,简化了构建和管理项目的过程。
    生态系统和社区支持:Spring Boot 建立在Spring框架之上,可以无缝集成 Spring 的各种功能和扩展。同时,Spring Boot 还提供了大量的第三方库和插件,可以方便地集成其他技术栈,构建全栈式应用程序。

    springboot的缺点

    (1)修复bug较慢,报错时难以定位。

    (2)集成度较高,不易于了解底层。

    SSM

    • SSM是多个框架的组合简称,SSM =  Spring + SpringMVC + Mybatis,即Spring与Spring MVC,以及Spring 与MyBatis整合开发。这三个框架整合起来适用于搭建各种大型的企业级应用系统

    注: Mybatis 也是一种框架,功能同JDBC, 用于连接数据库进行数据处理。

    注:在学习SSM中,发现SpringMVC是web项目常用的框架。但近几年随着springboot的使用,springboot已经替代了springMVC了,SSM =  Spring + SpringBoot + Mybatis。

    • SSM是一种常用的 Java EE 开发框架组合,主要用于简化企业级应用开发。SSM 框架结合了 Spring 框架的依赖注入、控制反转和面向切面编程,Spring MVC 作为模型视图控制器,MyBatis 作为持久层框架,简化了企业级应用的开发。
    • 交互图

    • 应用比较广泛的 Java EE 企业级框架(JavaEE还有其他框架,如SSH)

    SSH

    • 基本用途同SSM, SSH =  Spring + Struts + Hibernate 三大框架

    注:Struts 是一个优秀、开源、免费的 MVC 的框架

    • 与SSM的关系:

    大约在2015年之前,业内使用最多的Java三大框架是Struts、Spring和Hibernate ,简称SSH。

    2015年之后逐步被SpringMVC、Spring、MyBatis所取代,简称SSM。

    SSM之所以取代SSH,在于Hibernate和MyBatis区别、SpringMVC和struts区别。

    ✅Hibernate和MyBatis区别

    总结来说就是:

    MyBatis:小巧、方便、高效、简单、直接、半自动

    Hibernate:强大、方便、高效、复杂、绕弯子、全自动

    举个形象的比喻:

    MyBatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。

    Hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。

    相同点:

    都是实现了orm模式的数据访问层框架,专门处理和数据库的交互。

    不同点:

    a. Hibernate通常被认为是一款完全的ORM框架。我们使用Hibernate时可以一行SQL语句都不用写,就能实现各种对数据库操作的意图。而Mybatis只是一款半完整的ORM框架,使用Mybatis需要自己编写SQL语句,因此Hibernate在功能和可移植性方面要强于Mybatis。

    b. 相对于Hibernate来说,Mybatis需要关注更多的细节,更加接近jdbc的开发模式,这使得Mybatis更加容易上手

    c. 在SQL优化方面,Mybatis更加直接,更加方便。

    d. Mybatis比Hibernate更加小巧灵活,对绝大多数项目来说,Mybatis足以满足项目需求,所以现在Mybatis比HIbernate更常用。

    ✅struts和SpringMVC区别。

    相同点:

    都是实现了mvc模式的 控制层框架,可以专门处理和前端的交互。

    不同点:

    a. Struts2中的Controller是多例的,SpringMVCController是单例的,所以SpringMVC是线程不安全的;

    b. SpringMVC是Spring框架中的一个子模块,所以SpringMVC和Spring整合时更加简单,配置也更加容易。

    maven

    • 简化依赖的jar管理。自动下载jar包和它所依赖的包,这样可以保证了多人开发时jar版本不同的问题

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281501.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    GS论文阅读--GeoTexDensifier

    前言 本文是一个关于高斯致密化策略对高斯地图进行优化&#xff0c;他主要关注了几何结构和纹理信息。我最近对于高斯点的分布比较感兴趣&#xff0c;因为高斯点的分布决定了之后重建质量的好坏&#xff0c;初始化高斯很重要&#xff0c;但之后的维护需要致密化与修建策略&…

    计算机视觉算法实战——无人机检测

    ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​ 1. 引言✨✨ 随着无人机技术的快速发展&#xff0c;无人机在农业、物流、监控等领域的应用越来越广泛。然而&#xff0c;无人机的滥用也带…

    2025/1/21 学习Vue的第四天

    睡觉。 --------------------------------------------------------------------------------------------------------------------------------- 11.Object.defineProperty 1.在我们之前学习JS的时候&#xff0c;普通得定义一个对象与属性。 <!DOCTYPE html> <h…

    软件测试 —— Postman(断言)

    软件测试 —— Postman&#xff08;断言&#xff09; 断言示例断言检查状态码验证响应体中的特定字段检查响应时间验证响应头检查响应体中的字符串验证JSON数组长度 使用环境变量运行集合并查看结果 检查状态码检查响应体中的字符串检查响应体字符串是否相等验证响应头字段检查…

    高并发处理 --- 超卖问题+一人一单解决方案

    在高并发场景下&#xff0c;超卖和一人一单是两个典型的并发问题。为了解决这两个问题&#xff0c;我们可以使用乐观锁&#xff08;CAS&#xff09;和悲观锁&#xff0c;这两者分别有不同的实现方式和适用场景。下面我们详细介绍如何通过 乐观锁&#xff08;CAS&#xff09; 和…

    汇编实验·分支程序设计

    一、实验目的: 1.能够熟练的进行分支程序的编写,掌握条件语句对应的汇编语言指令的实现 2.掌握多个条件的分支语句的实现原理,理解C语言中的逻辑运算“短路”特征 二、实验内容 1.对2和3任务中的C代码在VS2022中运行,设置生成对应的汇编代码,观察生成代码的不同,着重…

    智能风控 数据分析 groupby、apply、reset_index组合拳

    目录 groupby——分组 本例 apply——对每个分组应用一个函数 等价用法 reset_index——重置索引 使用前​编辑 注意事项 groupby必须配合聚合函数、 关于agglist 一些groupby试验 1. groupby对象之后。sum&#xff08;一个列名&#xff09; 2. groupby对象…

    第11篇:vue3 中 props 的使用

    第一步&#xff1a;App.vue 中发送数据&#xff1a; <template> <Person :list"persons"/> //注意多个的话 中间是没有 , // <Person a "哈哈中" :list persons /> </template> let persons reactive([ {id:e98219e12,n…

    AIGC视频生成模型:Stability AI的SVD(Stable Video Diffusion)模型

    大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Stability AI的视频生成模型SVD(Stable Video Diffusion)模型&#xff0c;这家公司在图像生成领域富有盛名&#xff0c;开发并维护了知名开源项目SD系列…

    编程题-两数相加(中等)

    题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这…

    软件测试 —— 性能测试(jmeter)

    软件测试 —— 性能测试&#xff08;jmeter&#xff09; 什么是jmeter安装jmeterjmeter常用组件线程组取样器结果树 我们之前学习了接口测试工具Postman&#xff0c;我们今天要学习的是性能测试工具——jmeter 什么是jmeter Apache JMeter 是一个开源的性能测试工具&#xff…

    Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)

    准备工作 Kubernetes v1.28.0搭建教程请参考&#xff1a;Kubernetes v1.28.0集群快速搭建教程-CSDN博客 查看当前集群nodes都是ready状态 查看当前pods都是running状态 下载并修改配置文件 下载 recommended.yaml &#xff0c;下载好之后&#xff0c;进入文件编辑 下载地址…

    (2024,MLLM,Healthcare,综述)多模态学习是否已在医疗保健领域实现通用智能?

    Has Multimodal Learning Delivered Universal Intelligence in Healthcare? A Comprehensive Survey 目录 0. 摘要 1. 简介 5. MLLM 5.1 模态编码器与跨模态适配器 5.1.1 图像编码器 (Image Encoder) 5.1.2 语言模型 (Language Model) 5.1.3 跨模态适配器 (Cross-moda…

    图形化数据报文转换映射工具

    目录 概要整体架构流程技术名词解释技术细节小结 概要 在当今数字化时代&#xff0c;数据的处理和分析是企业、科研机构以及各类组织日常运营的核心环节。数据来源广泛&#xff0c;格式多样&#xff0c;常见的数据格式包括XML&#xff08;可扩展标记语言&#xff09;和JSON&a…

    如何打造一个高并发系统?

    今天和大家聊聊作为一个后端开发&#xff0c;在实际工作中&#xff0c;我们如何打造一个高并发的系统&#xff1f; 如下图所示&#xff0c;大概有六个层面&#xff0c;我们结合具体的场景直播间签到去一一细说。 一、前端 1、打散请求&#xff1a;即把用户的接口分散一点去请求…

    acm培训 part 1(学习总结)

    第一部分的重点为语法糖&#xff0c;时空复杂度&#xff0c;stl容器等等&#xff0c;下面就简单介绍一下这些部分。 1. 语法糖 1.1 定义 语法糖是由英国计算机科学家彼得约翰兰达提出的一个术语&#xff0c;指的是编程语言中添加的某种语法&#xff0c;这种语法对语言的功能…

    【ComfyUI】python调用生图API,实现批量出图

    官方给的示例&#xff1a; https://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/websockets_api_example.pyhttps://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/websockets_api_example.pyhttps://github.com/comfyanonymous/ComfyU…

    【2024年华为OD机试】(B卷,100分)- 非严格递增连续数字序列 (JavaScriptJava PythonC/C++)

    一、问题描述 题目描述 给定一个仅包含大小写字母和数字的字符串&#xff0c;要求找出其中最长的非严格递增连续数字序列的长度。非严格递增连续数字序列指的是序列中的数字从左到右依次递增或保持不变&#xff0c;例如 12234 就是一个非严格递增连续数字序列。 输入描述 输…

    C# OpenCV机器视觉:红外体温检测

    在一个骄阳似火的夏日&#xff0c;全球却被一场突如其来的疫情阴霾笼罩。阿强所在的小镇&#xff0c;平日里熙熙攘攘的街道变得冷冷清清&#xff0c;人们戴着口罩&#xff0c;行色匆匆&#xff0c;眼神中满是对病毒的恐惧。阿强作为镇上小有名气的科技达人&#xff0c;看着这一…

    Android Audio音频系统

    一、Audio音频架构简介 二、Android Audio系统框架 三、Audio架构以及各层的代码分布图 四、音频框架在Android系统中的进一步细化 五、创建声卡和注册声卡 六、Android Audio系统的结构 七、Audio音频原理介绍 八、Audio音频策略制定与策略执行的调用流程 九、Android…