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

目录

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版本不同的问题
相关推荐
后端小张3 小时前
基于飞算AI的图书管理系统设计与实现
spring boot
金銀銅鐵7 小时前
Spring 中的 initializeBean 方法的内部逻辑小总结
spring
考虑考虑1 天前
Jpa使用union all
java·spring boot·后端
阿杆1 天前
同事嫌参数校验太丑,我直接掏出了更优雅的 SpEL Validator
java·spring boot·后端
昵称为空C2 天前
SpringBoot3 http接口调用新方式RestClient + @HttpExchange像使用Feign一样调用
spring boot·后端
麦兜*2 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*2 天前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
汤姆yu2 天前
基于springboot的毕业旅游一站式定制系统
spring boot·后端·旅游
计算机毕业设计木哥2 天前
计算机毕设选题推荐:基于Java+SpringBoot物品租赁管理系统【源码+文档+调试】
java·vue.js·spring boot·mysql·spark·毕业设计·课程设计
青衫客362 天前
Spring异步编程- 浅谈 Reactor 核心操作符
java·spring·响应式编程