使用idea对spring全家桶的各种项目进行创建
目录
- 1. 简介
- 2. spring
- 2.1 简介
- 2.2 创建
- 3. springmvc
- 3.1 介绍
- 3.2 创建
- 4. springboot
- 4.1 简介
- 4.2 创建(仅仅就其中一种)
- 5. 其他:maven
- 6. 参考链接
1. 简介
因为总是分不清spring全家桶,所以就在这里进行一个总结。
2. spring
2.1 简介
Spring是一个开放源代码的、轻量级且非侵入式的Java开发框架,旨在解决业务逻辑层和其他各层的松耦合问题,将面向接口的编程思想贯穿整个系统应用。Spring框架是一个分层架构,由多个定义良好的模块组成,这些模块可以单独存在,也可以与其他模块联合使用,为开发者提供了极大的灵活性和可扩展性。
Spring的主要特点
- 轻量级和非侵入式:Spring框架的轻量级特性使得它能够在任何Java应用中使用,而不会增加系统的复杂性。同时,Spring的非侵入式设计意味着它不会强制你遵循特定的编程模型或架构,而是允许你在现有的代码基础上进行集成。
控制反转(IoC):IoC是Spring框架的核心内容,它通过一种称为依赖注入(DI)的技术,实现了对象之间的解耦。在IoC模式下,对象的创建和依赖关系的建立由Spring容器来管理,而不是由代码直接控制,这大大降低了代码的耦合度,提高了系统的可维护性和可扩展性。 - 面向切面编程(AOP):Spring提供了丰富的AOP支持,允许开发者将横切关注点(如日志、事务管理等)从业务逻辑中分离出来,以声明的方式应用到需要这些横切关注点的对象上。这不仅简化了代码,还提高了代码的复用性和可维护性。
丰富的模块支持:Spring框架包含多个模块,如Spring Core(核心容器)、Spring Context(上下文)、Spring AOP(面向切面编程)、Spring DAO(数据访问对象)、Spring ORM(对象关系映射)、Spring Web等,这些模块为开发者提供了从底层数据访问到上层Web开发的全栈支持。 - 易于集成和扩展:Spring框架与许多流行的第三方库和框架(如Hibernate、MyBatis、Struts等)都有很好的集成支持,使得开发者可以轻松地将Spring框架与其他技术栈结合使用。同时,Spring框架的模块化设计也允许开发者根据自己的需求进行选择和扩展。
Spring的应用场景
Spring框架因其强大的功能和灵活性,被广泛应用于各种类型的项目中,包括但不限于:
- Web应用程序:Spring提供了Spring MVC等模块,支持构建各种规模和类型的Web应用程序。
- 企业应用程序:Spring框架为企业级应用程序开发提供了丰富的功能支持,如依赖注入、AOP、事务管理等。
- 大数据应用程序:Spring提供了与大数据平台集成的解决方案,如Spring for Apache Hadoop等。
- 移动应用程序:虽然Spring主要是为Java应用程序提供支持,但也可以通过Spring Boot等框架用于移动应用程序的后端服务开发。
2.2 创建
简单创建一个maven项目
写好名字和组ID
完成
3. springmvc
3.1 介绍
Spring MVC是Spring框架的一个重要模块,它实现了MVC(Model-View-Controller)设计模式,用于简化Web应用的开发。以下是对Spring MVC的详细解析:
一、Spring MVC的基本概念
-
MVC设计模式
MVC是一种将应用程序分为三个核心部分的软件设计模式,即模型(Model)、视图(View)和控制器(Controller)。模型负责业务逻辑和数据管理,视图负责数据的展示,控制器负责接收用户的输入并调用模型和视图去完成用户的请求。 -
Spring MVC概述
Spring MVC是Spring框架的一部分,它属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC通过一套注解,让一个简单的Java类成为处理请求的控制器,而无需实现任何接口。同时,它还支持Restful编程风格的请求,并提供了构建Web应用程序的全功能MVC模块。
二、Spring MVC的主要组件
Spring MVC的主要组件包括:
- DispatcherServlet:前端控制器,负责接收所有请求并分发到相应的处理器。
- HandlerMapping:处理器映射器,负责将请求映射到相应的处理器。
- Handler:处理器,负责处理具体的请求。
- HandlerAdapter:处理器适配器,负责调用处理器的方法。
- ViewResolver:视图解析器,负责将处理器返回的结果解析为视图。
- View:视图,负责将结果显示给用户。
三、Spring MVC的优点
- 轻量级:Spring MVC是轻量级的,使用起来相对灵活。
- 开发效率高:通过注解和自动装配,减少了XML配置的工作量,提高了开发效率。
- 灵活性好:支持多种视图技术,如JSP、Velocity、FreeMarker等。
- 易于测试:Spring MVC的控制器是POJO,易于编写单元测试。
- 支持Restful风格:方便构建RESTful风格的Web应用。
四、Spring MVC的使用场景
Spring MVC适用于构建企业级Web应用,特别是在需要实现MVC模式进行Web开发的场景下。它可以与Spring框架的其他模块(如Spring ORM、Spring Security等)无缝集成,构建出功能强大、易于维护的Web应用。
五、Spring MVC与Spring Boot的关系
Spring Boot是Spring框架的扩展,它消除了设置Spring应用程序所需的XML配置,为更快、更高效的开发生态系统铺平了道路。Spring Boot包含了Spring MVC作为其Web开发的模块之一,使得开发者可以更加便捷地构建Web应用。
3.2 创建
1.创建maven项目和maven web模块(File-New-project)
填写名称和组ID
选择仓库
补齐文件包
修改web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
</web-app>
点击右上角,添加配置
添加tomcat本地
修改端口,不要冲突了
点击部署,添加工作源
创建完成!!!
4. springboot
4.1 简介
Spring Boot是Spring开源组织下的一个子项目,是Spring组件的一站式解决方案。它主要简化了使用Spring的难度,减少了繁重的配置,并提供了各种启动器(Starters),使得开发者能够快速上手和进行项目开发。以下是对Spring Boot的详细介绍:
一、概述
- 定义:Spring Boot旨在通过提供大量的默认配置和自动配置,来简化Spring应用的初始搭建以及开发过程。它不是一个对Spring功能上的增强,而是一种快速使用Spring的方式。
- 官网:Spring Boot官网
二、特点 - 独立运行:Spring Boot内嵌了多种Servlet容器(如Tomcat、Jetty或Undertow),使得应用可以直接打包成jar包,通过命令java -jar xx.jar独立运行,无需部署到外部容器中。
- 简化部署:Spring Boot提供了一系列的“starter”项目对象模型(POMs),用于简化Maven或Gradle的配置。通过添加相应的starter依赖,可以自动引入所需的库和配置。
- 自动配置:Spring Boot能够根据当前类路径下的类、jar包来自动配置Bean,如添加spring-boot-starter-web启动器就能自动配置Web环境,无需其他配置。
- 无代码生成及XML配置:Spring Boot配置过程中无需代码生成,也无需XML配置文件,而是依赖于条件注解和自动配置来实现配置。
- 应用监控:Spring Boot提供了一系列端点(Endpoints),用于监控服务及应用,进行健康检测等。
三、优点
- 简化项目配置:通过自动配置提供默认配置,减少开发人员手动配置的工作量。
- 快速开发:提供丰富的开发工具和插件,支持热部署,提高开发效率。
- 微服务架构支持:通过Spring Cloud提供微服务组件,如服务注册与发现、负载均衡、断路器等,支持构建微服务架构。
- 自动装配:根据用户的依赖和配置自动装配和注入所需的Bean,减少手动配置工作。
- 健康监测与管理:提供完善的健康监测和管理机制,监控应用程序的运行状况。
- 强大的社区支持:由Spring团队开发和维护,拥有庞大的开源社区支持,提供丰富的资源、文档和教程。
- 测试支持:提供强大的测试支持,可以轻松编写和执行各种类型的测试。
四、缺点
- 虽然上手容易,但如果不了解其核心技术及流程,一旦遇到问题可能会比较棘手,且解决方案相对较少,需要一个完善的过程。
4.2 创建(仅仅就其中一种)
创建完成!!!
5. 其他:maven
Maven是一个强大的项目管理和构建工具,主要用于Java项目的构建、依赖管理和项目信息管理。以下是对Maven的详细介绍:
一、Maven的基本功能
- 项目管理和构建:Maven能够管理项目的构建、报告和文档,提供了一个清晰的项目结构。它使用约定俗成的目录结构,使得所有的项目都有相同的目录布局,有助于开发人员对项目结构有明确的认识,更容易理解和维护代码。
- 依赖管理:Maven通过一个文本文件(通常被称为pom.xml)来定义项目的依赖关系。开发人员只需要在pom.xml文件中指定所需的依赖,Maven就能自动下载并导入这些依赖。这大大减少了手动管理项目依赖的复杂性和出错的可能性。
- 自动化构建:Maven提供了一套默认的构建生命周期和插件,以帮助开发人员自动化构建和测试过程。通过简单的命令行操作,就可以完成项目的编译、测试、打包和部署等任务。
- 多模块项目管理:Maven支持多模块项目的构建和管理,可以将多个相关的项目组织成一个项目,方便统一管理和构建。
- 插件扩展性:Maven有丰富的插件生态系统,开发人员可以通过自定义插件来扩展Maven的功能,满足项目的特定需求。
- 跨平台构建:Maven的构建过程是跨平台的,无论是在Windows、Linux还是Mac OS上,都能保证相同的构建结果。
- 集成版本控制系统:Maven可以与版本控制系统(如Git)集成,方便管理项目的版本和发布。
- 部署和发布:Maven提供了一套完整的部署和发布机制,开发人员可以通过简单的命令将项目发布到本地仓库或者远程仓库。
二、Maven的工作原理
Maven通过项目对象模型(POM)来管理项目。POM是一个XML文件,位于项目根目录下,文件名为pom.xml。它包含了项目的配置信息、依赖关系、构建配置等。Maven在构建项目时,会读取pom.xml文件,并根据其中的配置信息来执行相应的构建任务。
Maven的仓库分为本地仓库、远程仓库和中央仓库。本地仓库是Maven在本地计算机上存储所有已下载的插件和依赖的地方。远程仓库可以是任何位置的仓库,用于存储Maven可访问的插件和依赖。中央仓库是由Maven社区维护的一个远程仓库,包含了大量的插件和依赖。
当Maven需要构建项目时,它会首先检查本地仓库中是否有所需的插件和依赖。如果没有,Maven会从远程仓库或中央仓库中下载它们,并存储在本地仓库中以便将来使用。
三、Maven的常用命令
- mvn compile:编译项目,将项目的源代码编译成可执行的文件。
- mvn test:运行项目的单元测试,验证代码的正确性。
- mvn package:打包项目,将项目编译后的文件打包成可发布的格式,如JAR、WAR等。
- mvn install:安装项目到本地Maven仓库,以便其他项目可以引用它。
- mvn deploy:将项目发布到远程Maven仓库,以便其他团队或项目可以引用它。
四、Maven的优势
- 简化构建过程:Maven通过自动化构建和依赖管理,大大简化了Java项目的构建过程。
- 提高开发效率:开发人员可以专注于业务逻辑的实现,而不需要花费大量时间处理项目构建和依赖管理等问题。
- 促进团队协作:Maven提供了一个标准化的项目结构和构建流程,有助于团队成员之间的协作和沟通。
- 增强项目的可维护性:通过清晰的项目结构和依赖管理,Maven提高了项目的可维护性和可重用性。
6. 参考链接
搭建SpringBoot项目三种方式(超详细版)
相关文章:

使用idea对spring全家桶的各种项目进行创建
目录 1. 简介2. spring2.1 简介2.2 创建 3. springmvc3.1 介绍3.2 创建 4. springboot4.1 简介4.2 创建(仅仅就其中一种) 5. 其他:maven6. 参考链接 1. 简介 因为总是分不清spring全家桶,所以就在这里进行一个总结。 2. spring …...
FAT32、NTFS、FAT的区别
FAT(File Allocation Table) 特点 簇大小限制:FAT文件系统的簇大小是固定的,这限制了单个文件的大小和文件系统的效率。 存储效率:由于簇大小的限制,FAT文件系统在存储小文件时可能会浪费空间。 文件系统结…...

捉虫笔记(二)之 杀软请你自重点
捉虫笔记(二)之 杀软请你自重点 前一篇文章介绍了如何配置符号,这一篇文章我们来个实战。 1 现象 在我们的程序中利用robocopy进行文件的复制。但是QA反馈,只要进行了备份操作,整个进程就会卡住。但是奇怪的是只有他…...

python学习之路 - python的函数
目录 一、python函数1、函数介绍2、函数的定义3、函数的参数4、函数的返回值5、函数说明文档6、函数的嵌套调用7、变量的作用域8、综合案例9、函数与方法的区别 二、python函数进阶1、函数多返回值2、函数多种传参方式a、位置参数b、关键字参数c、缺省参数d、不定长参数 3、匿名…...

使用SpringBoot+Vue3开发项目(2)---- 设计文章分类的相关接口及页面
目录 一.所用技术栈: 二.后端开发: 1.文章分类列表渲染: 2.新增文章分类: 3.编辑文章分类: 4.删除文章分类 : 5.完整三层架构后端代码: (1)Controller层:…...
Layui---toolbar与 tool的区别
table.on(toolbar): table.on(toolbar): 这个事件监听器是用来处理表格工具栏的事件。工具栏通常位于表格的上方,可以包含添加、删除、导出等按钮。当用户与这些工具栏中的按钮交互时,比如点击一个按钮来添加新行或者进行搜索操作,…...

U-Net++原理与实现(含Pytorch和TensorFlow源码)
U-Net原理与实现 引言1. U-Net简介1.1 编码器(Encoder)1.2 解码器(Decoder)1.3 跳跃连接(Skip Connections) 2. U-Net详解2.1 密集跳跃连接2.2 嵌套和多尺度特征融合2.3 参数效率和性能2.4 Pytorch代码2.5 …...

产品心理学:啦啦队效应
电视里我们常会看见这样一个场景,一群女孩穿着短裙有说有笑地在大街上走过,把路人们都看傻了,其实单个来看,她们的长相并不出众,可是凑在一起就显得青春貌美,这就是“啦啦队效应”——cheerleader effect。…...

AC+AP组网
配置DHCP Switch1 <Huawei>sys [Huawei]undo in en [Huawei]vlan batch 10 20 30 40[Huawei]int vlan 10 [Huawei-Vlanif10]ip add 192.168.10.1 24 [Huawei-Vlanif10]quit[Huawei]int vlan 20 [Huawei-Vlanif20]ip add 192.168.20.1 24 [Huawei-Vlanif20]quit[Huawei]…...

2024.8.05(glibc的安装及MySQL的安全用户角色权限)
一、glibc的安装 1、清空/etc目录下的my.cnf [rootlocalhost ~]# ls -l /etc/my.cnf -rw-r--r--. 1 root root 570 6月 8 2017 /etc/my.cnf [rootlocalhost ~]# rm -rf /etc/my.cnf 2、删除mariadb [rootlocalhost ~]# yum -y remove mariadb [rootlocalhost ~]# find / -na…...

【精选】6款一键生成论文的软件3000字论文网站
千笔-AIPassPaPer是一款功能强大且全面的AI论文写作工具,特别适合学术研究者和学生使用。它不仅能够一键生成高质量的论文初稿,还涵盖了700多个学科专业方向,满足各种学术需求。 一、千笔-AIPassPaPer 传送门:https://www.aipape…...

如何使用 PHP Simple HTML DOM Parser 轻松获取网页中的特定数据
背景介绍 网页数据的抓取已经成为数据分析、市场调研等领域的重要工具。无论是获取产品价格、用户评论还是其他公开数据,网页抓取技术都能提供极大的帮助。今天,我们将探讨如何使用 PHP Simple HTML DOM Parser 轻松获取网页中的特定数据。PHP Simple H…...

Linux笔记 --- 传统链表
目录 链表 单向链表 单向循环链表 双向链表 设计表 初始化 在auchor后插入节点, 在auchor前插入节点 删除节点 传统链表 通过使用链表我们可以将一个数组中的数据分开到不同位置存放并使用指针指向他们,使之逻辑相连,解决了顺序存储所需要…...

C语言的编译(预处理操作)+链接
目录 翻译环境和执行环境 预定义符号 #define定义标识符 续行符\ #define定义宏 再说一下,#define其实就是替换 #和## 宏和函数的对比 命名约定 #undef 命令行定义 条件编译 文件包含 避免头文件重复引用,否则会增加代码长度 翻译环境和执行环境 在C中存…...

FFmpeg实战 - 解复用与解码
大纲目录 文章目录 前置知识音视频基础概念解复用、解码的流程分析FFMPEG有8个常用库 常见音视频格式的介绍aac格式介绍(ADTS)h264格式分析FLV和MP4格式介绍 FFmpeg解码解封装实战数据包和数据帧(AVPacket/AVFrame)AVPacket/AVFra…...

8.5作业
1.思维导图 2.提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数,要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {string str;cout << "请输入一个字符串&quo…...
【问题】C++:有哪些类型的智能指针,区别?
智能指针是一种在 C 中管理动态分配内存的工具,可以帮助避免内存泄漏和提高程序的安全性。在 C11 标准引入之后,C 提供了三种主要类型的智能指针,它们分别是 std::unique_ptr、std::shared_ptr 和 std::weak_ptr。这些智能指针有不同的所有权…...
Go-反射
概念 在Go语言中,反射(reflection)是指在运行时检查程序的结构、变量和接口的机制。可以通过反射获取和修改变量的值、获取变量的类型信息、调用方法等操作。 反射主要由reflect包提供,它定义了两个重要的类型:Type和…...

【深度学习】DeepSpeed,ZeRO 数据并行的三个阶段是什么?
文章目录 ZeRO实验实验设置DeepSpeed ZeRO Stage-2 实验性能比较进一步优化DeepSpeed ZeRO Stage-3 和 CPU 卸载结论ZeRO ZeRO(Zero Redundancy Optimizer)是一种用于分布式训练的大规模深度学习模型的优化技术。它通过分片模型状态(参数、梯度和优化器状态)来消除数据并行…...
代码随想录算法训练营第三十六天 | 1049. 最后一块石头的重量 II、494. 目标和、474.一和零
一、1049. 最后一块石头的重量 II 题目链接:1049. 最后一块石头的重量 II - 力扣(LeetCode) 文章讲解:代码随想录 (programmercarl.com)——1049. 最后一块石头的重量 II 视频讲解:动态规划之背包问题,这个…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...

运动控制--BLDC电机
一、电机的分类 按照供电电源 1.直流电机 1.1 有刷直流电机(BDC) 通过电刷与换向器实现电流方向切换,典型应用于电动工具、玩具等 1.2 无刷直流电机(BLDC) 电子换向替代机械电刷,具有高可靠性,常用于无人机、高端家电…...

MAZANOKE结合内网穿透技术实现跨地域图像优化服务的远程访问过程
文章目录 前言1. 关于MAZANOKE2. Docker部署3. 简单使用MAZANOKE4. 安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结 前言 在数字世界高速发展的今天,您是否察觉到那些静默增长的视觉数据正在悄然蚕食存储空间?随着影像记录成为日常习惯&…...