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

news/2025/1/23 20:39:57/

目录

JAVA

框架

javaEE

spring-toc" name="tableOfContents" style="margin-left:0px">spring

springmvc-toc" name="tableOfContents" style="margin-left:0px">springmvc

springboot-toc" name="tableOfContents" style="margin-left:0px">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" name="spring">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" name="springmvc">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" name="springboot" style="background-color:transparent">springboot

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

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

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

    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!";
        }
    }

    (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.ppmy.cn/news/1565572.html

    相关文章

    Spring Boot整合WebSocket

    目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket&#xff1f; ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…

    css动画水球图

    由于echarts水球图动画会导致ios卡顿&#xff0c;所以纯css模拟 展示效果 组件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…

    T-SQL语言的语法

    T-SQL深度解析与应用 T-SQL&#xff08;Transact-SQL&#xff09;是微软SQL Server使用的一种扩展SQL&#xff08;结构化查询语言&#xff09;。它不仅支持标准SQL的所有功能&#xff0c;而且增加了许多实用的扩展和特性&#xff0c;使得数据库的操作更加灵活和强大。本文将对…

    微软宣布Win11 24H2进入新阶段!设备将自动下载更新

    快科技1月19日消息&#xff0c;微软于1月16日更新了支持文档&#xff0c;宣布Windows 11 24H2进入新阶段。 24H2更新于2024年10月1日发布&#xff0c;此前为可选升级&#xff0c;如今微软开始在兼容的Windows 11设备上自动下载并安装24H2版本。 微软表示&#xff1a;“运行Wi…

    Dart语言和flutter框架的特性

    一、Dart 语言的特性&#xff1a; 面向对象&#xff1a; Dart 是一种面向对象的语言&#xff0c;支持类、接口、继承、多态等面向对象的基本概念。它允许你创建类和对象&#xff0c;定义方法和属性&#xff0c;并且可以使用继承来扩展和重用代码。 class Animal {String name;…

    Kafka与ZooKeeper

    按照正确的顺序运行以下命令以启动所有服务&#xff1a; # Start the ZooKeeper service $ bin/zookeeper-server-start.sh config/zookeeper.properties 打开另一个终端会话并运行&#xff1a; # Start the Kafka broker service $ bin/kafka-server-start.sh config/serve…

    基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测

    完整源码项目包获取→点击文章末尾名片&#xff01; 番石榴病害数据集 背景描述 番石榴 &#xff08;Psidium guajava&#xff09; 是南亚的主要作物&#xff0c;尤其是在孟加拉国。它富含维生素 C 和纤维&#xff0c;支持区域经济和营养。不幸的是&#xff0c;番石榴生产受到降…

    IO进程----进程

    进程 什么是进程 进程和程序的区别 概念&#xff1a; 程序&#xff1a;编译好的可执行文件 存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09; 程序是静态的&#xff0c;没有任何执行的概念 进程&#xff1a;一个独立的可调度的任务 执行一个程序分配资…