SpringBoot项目创建,详细流程

一、前言

Spring Boot是一个开源的Java框架,由Pivotal团队(现为VMware旗下)开发,通过提供默认配置和一系列启动器(starters)来简化项目配置,使得开发者能够快速启动和运行Spring应用程序。

image

本次通过IDEA快速创建一个Spring Boot项目,在操作之前,确保你的开发环境中已经安装了以下软件:

  1. Java Development Kit (JDK)
  2. Maven 或 Gradle(用于构建项目)
  3. 一个集成开发环境(IDE),比如 IntelliJ IDEA

二、创建SpringBoot项目

2.1 创建新项目

idea选择“File”—“New”—“Project”

image​​

当然你可以在https://start.spring.io/中初始化你项目工程

image

2.2 项目类型为SpringBoot

image

  • Group: 是公司或者组织的名称,是一种命名空间的概念,比如网站,那么group可以是tech.pdai(公司名,一般用公司网站倒序)(项目的分组信息,例如 “com.example”)
  • Artifat: 项目的名称,例如 “my-spring-cloud-project”

2.3 选择Springboot版本及初始化模块

spring Boot版本尽量选低

image

image

2.4 初始化

image

image

2.5 配置maven

在Spring Boot项目中,选择不使用默认的Maven配置而改为其他配置(例如使用阿里云仓库作为依赖源)通常是基于以下几个原因:

  1. 依赖速度

    • 默认的Maven中央仓库可能由于网络距离、带宽限制或高并发请求导致下载依赖包的速度较慢。
    • 使用国内的镜像源,如阿里云仓库,可以提供更快的下载速度和更稳定的连接,从而加快构建和部署过程。
  2. 网络稳定性

    • 在某些地区或网络环境下,默认的Maven中央仓库可能不够稳定,可能会出现连接超时或无法访问的情况。
    • 使用国内的镜像源可以提高网络连接的稳定性,减少构建过程中的不确定性。
  3. 依赖管理和版本控制

    • 某些组织可能需要对依赖进行更严格的管理,包括对版本的控制、依赖的审批和私有库的管理。
    • 使用国内的仓库或私有仓库可以让组织更好地控制依赖的来源和版本,确保项目的安全性和合规性。
  4. 安全性

    • 使用官方的Maven中央仓库可能存在一定的安全风险,如依赖包被篡改或者包含恶意代码。
    • 通过使用可信的镜像源或私有仓库,可以降低这种风险,确保依赖的安全性。
  5. 成本和维护

    • 对于大型项目或企业级应用,使用本地的仓库或镜像源可以减少对外部资源的依赖,降低成本,并简化维护工作。
  6. 插件和工具的支持

    • 某些特定的插件或工具可能不在Maven中央仓库中,或者需要通过特定的仓库来获取。
    • 配置自定义的Maven仓库可以确保这些插件和工具的可用性和一致性。

为了使用阿里云或其他镜像源,需要在项目的pom.xml​文件中进行配置,如下所示:

<project><!-- ... 其他配置 ... --><repositories><repository><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url></repository></repositories><!-- ... 其他配置 ... -->
</project>

通过上述配置,Maven会优先从阿里云仓库下载依赖,从而提高构建速度和稳定性。同时,这也有助于提升开发和部署的效率。

image

修改配置后,重新reload项目

image

image

2.6 项目结构介绍

image

  • src/main/java 为项目的开发目录,业务代码在这里写。

  • src/main/resources 为配置文件目录,静态文件、模板文件和配置文件都放在这里。

    • 子目录 static 用于存放静态资源文件,比如说 JS、CSS 图片等。
    • 子目录 templates 用于存放模板文件,比如说 thymeleaf 和 freemarker 文件。
  • src/test/java 为测试类文件目录。

  • pom.xml 用来管理项目的依赖和构建。

1、.mvn 文件夹:这是 Maven Wrapper 的存放位置,用于在没有全局安装 Maven 的情况下运行 Maven 项目。

2、.gitignore 文件:用于指定应该被 Git 版本控制系统忽略的文件和目录。

3、HELP.md 文件:一个 Markdown 格式的文件,通常包含项目的帮助信息、说明和指南。

4、mvnw 文件:Maven Wrapper 的可执行脚本(Unix/Linux 系统),用于在项目中运行 Maven 命令。

5、mvnw.cmd 文件:Maven Wrapper 的可执行脚本(Windows 系统),用于在项目中运行 Maven 命令。

yygh_parent.iml 有的文件每个导入IDEA的项目都会生成一个项目同名的 .iml文件 用于保存你对这个项目的配置 (删了程序重新导入后还会生成 但由于配置丢失可能会造成程序异常)

2.7 删除多余文件及目录

image

删除后变成普通文件,需要配置为moudle

image

image

image

image-20240418230159762

image

image

2.8 启动项目

image

三、拓展-配置文件

3.1 application.properties的常用配置

application.properties​ 是 Spring Boot 中用于配置应用程序属性的文件,它位于 src/main/resources​ 目录下。在这个文件中,你可以设置各种应用程序的属性,包括数据库连接、端口号、日志级别、国际化配置等等。

以下是一些常见的 application.properties​ 配置示例:​​

设置端口号:

#多环境配置,测试,生产用不同的配置文件
spring.profiles.active=test#应用名称
spring.application.name=apply
#端口号
server.port=8888

应用程序上下文初始化器

应用指标。
spring.application.index= 
# 应用程序名称。
spring.application.name= 

多种开发环境配置

#开发/测试/生产环境分别对应dev/test/prod,可以自由定义,当前配置为开发环境
spring.profiles.active=dev不同环境中的配置信息可以写在其他文件中
application-test.properties 或者 application-prod.properties# 

配置端口和项目名访问

#指定springboot内嵌容器启动的端口,默认使用tomcat容器时在8080端口  
#server.port=8081
#配置项目访问路径
#server.servlet.context-path=/boot

http

#设定是否对object mapper也支持HATEOAS,默认为: true
spring.hateoas.apply-to-primary-object-mapper
#是否优先使用JSON mapper来转换.
spring.http.converters.preferred-json-mapper
#指定http请求和相应的Charset,默认: UTF-8
spring.http.encoding.charset
#是否开启http的编码支持,默认为true
spring.http.encoding.enabled
#是否强制对http请求和响应进行编码,默认为true
spring.http.encoding.force

tomcat的几个配置

server.tomcat.accept-count = 0 #当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。
server.tomcat.accesslog.buffered = true #是否缓冲输出以使其仅定期刷新。
server.tomcat.accesslog.directory = logs #创建日志文件的目录。可以是绝对的或相对于Tomcat基础目录。
server.tomcat.accesslog.enabled = false #启用访问日志。
server.tomcat.accesslog.file最新格式= .yyyy-MM-dd #要放在日志文件名中的日期格式。
server.tomcat.accesslog.pattern = common #访问日志的格式模式。
server.tomcat.accesslog.prefix = access_log #日志文件名前缀。
server.tomcat.accesslog.rename-on-rotate = false #是否延迟在文件名中包含日期戳,直到旋转时间。
server.tomcat.accesslog.request-attributes-enabled = false #设置用于请求的IP地址,主机名,协议和端口的请求属性。
server.tomcat.accesslog.rotate = true #是否启用访问日志轮换。
server.tomcat.accesslog.suffix = .log#日志文件名后缀。
server.tomcat.additional-tld-skip-patterns = #逗号分隔的其他模式列表,这些模式匹配要忽略的TLD扫描的jar。
server.tomcat.background-processor-delay = 30s #调用backgroundProcess方法之间的延迟。如果未指定持续时间后缀,则将使用秒。
server.tomcat.basedir = #Tomcat 基目录。如果未指定,则使用临时目录。
server.tomcat.internal-proxies = 10 \\。\\ d {1,3} \\。\\ d {1,3} \\。\\ d {1,3} | \\
。192 \\ 168 \\ d {1,3} \\ d {1,3} | \\
。169 \\ 254 \\ d {1,3} \\ d {1,3} | \\
。127 \\ d {1,3} \\ d {1,3} \\ d {1,3} | \\
172 \\ 1 [6-9] {1} \\ d {1,3} \\ d {1,3} |。。\\
172 \\ 2 [0-9] {1} \\ d {1,3} \\ d {1,3} |。。\\
172 \\。3 [0-1] {1} \\。\\ d {1,3} \\。\\ d {1,3} #正则表达式匹配可信IP地址。
server.tomcat.max-connections = 0 #服务器在任何给定时间接受和处理的最大连接数。
server.tomcat.max-http-header-size = 0HTTP消息头的最大大小(以字节为单位)。
server.tomcat.max-http-post-size = 0 #HTTP 帖子内容的最大大小(以字节为单位)。
server.tomcat.max-threads = 0 #最大工作线程数。
server.tomcat.min-spare-threads = 0 #最小工作线程数。
server.tomcat.port-header = X-Forwarded-Port#用于覆盖原始端口值的HTTP头的名称。
server.tomcat.protocol-header = #包含传入协议的标头,通常命名为“X-Forwarded-Proto”。
server.tomcat.protocol-header-https-value = https #协议标头的值,指示传入请求是否使用SSL。
server.tomcat.redirect-context-root = #是否应通过在路径中附加/来重定向对上下文根的请求。
server.tomcat.remote-ip-header = #从中提取远程IPHTTP头的名称。例如,`X-FORWARDED-FOR`。
server.tomcat.resource.cache-ttl = #静态资源缓存的生存时间。
server.tomcat.uri-encoding = UTF-8 #用于解码URI的字符编码。
server.tomcat.use-relative-redirects = #通过调用sendRedirect生成的HTTP 1.1和更高版本的位置标头是使用相对还是绝对重定向。

数据库连接配置

#描述数据源
spring.datasource.url=jdbc:mysql://localhost:3306/tanglong?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=0000
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource

Mybatis

#指定mybatis配置文件路径
mybatis.mapper-locations=classpath:mapping/*.xml
#别名实体包,多个逗号隔开,typeAliasesPackage 属性的作用:https://www.cnblogs.com/appium/p/11633971.html
mybatis.type-aliases-package=com.how2java.springboot.pojo
#打印myBatis的sql语句 com.demo.mapper 为包名
logging.level.com.demo.mapper=debug
#是否打印sql语句
#spring.jpa.show-sql= true
#开启驼峰映射
mybatis.configuration.map-underscore-to-camel-case: true
#sql输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#如何将sql输出都日志中???

redis配置

#Redis数据库索引(默认为0)
spring.redis.database=0
#Redis服务器地址
spring.redis.host=127.0.0.1
#Redis服务器连接端口
spring.redis.port=6379
#Redis服务器连接密码(默认为空)
spring.redis.password=
#连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=10
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
#连接池中的最大空闲连接
spring.redis.pool.max-idle=8
#连接池中的最小空闲连接
spring.redis.pool.min-idle=0
#连接超时时间(毫秒)
spring.redis.timeout=0

文件上传multipart

#是否开启文件上传支持,默认为true
multipart.enabled=true
#设定文件写入磁盘的阈值,单位为MBKB,默认为0
multipart.file-size-threshold=0
#指定文件上传路径.
multipart.location
#指定文件大小最大值,默认1MB
multipart.max-file-size
#指定每次请求的最大值,默认为10MB
multipart.max-request-size

3.2 application.yml的常用配置

application.yml​ 是 Spring Boot 中另一种常用的配置文件格式,它使用 YAML(YAML Ain’t Markup Language)语法,相比于 .properties​ 格式更加清晰和易读。

src/main/resources​ 目录下创建 application.yml​ 文件,并在其中定义应用程序的配置信息。与 application.properties​ 相同,application.yml​ 也用于配置各种应用程序属性,包括数据库连接、端口号、日志级别、国际化配置等等。

以下是一些常见的 application.yml​ 配置示例:

  1. 设置端口号:
server:port: 8080
  1. 设置数据库连接:
spring:datasource:url: jdbc:mysql://localhost:3306/mydatabaseusername: usernamepassword: passworddriver-class-name: com.mysql.jdbc.Driver
  1. 设置日志级别:
logging:level:root: INFOorg.springframework: DEBUGcom.example: TRACE
  1. 设置国际化:
spring:messages:basename: messagesmvc:locale: zh_CN

.properties​ 格式相比,.yml​ 格式更加简洁清晰,层级结构更加明显,对于复杂的配置,使用 .yml​ 格式可能更加方便。但是请注意,YAML 对缩进和空格的要求比较严格,需要保持一致性,否则会导致解析错误。

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

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

相关文章

K8s 部署 elasticsearch-7.14.0 集群 及 kibana 客户端

一、K8s 部署 elasticsearch-7.14.0 集群 安装规划 组件replicas类型es3StatefulSetkibana1Deployment 使用 k8s 版本为&#xff1a;v1.18.0 。 本次使用 OpenEBS 来作为存储引擎&#xff0c;OpenEBS 是一个开源的、可扩展的存储平台&#xff0c;它提供了一种简单的方式来创…

国内首款千亿参数MoE模型APUS-xDAN-4.0:性能逼近GPT-4,可在4090显卡上运行

前言 随着人工智能技术的快速发展&#xff0c;模型参数的数量已成为衡量其复杂性和处理能力的重要指标。近日&#xff0c;国内科技企业APUS与AI创企新旦智能联合宣布&#xff0c;成功开源了国内首个千亿参数的混合专家模型&#xff08;MoE&#xff09;&#xff0c;APUS-xDAN-4…

python遍历文件夹的几种方法

方法1&#xff1a; 遍历目录下的所有文件&#xff0c;包含子目录 &#xff0c;显示为绝对路径 import osdef get_files_from_dir(dir):if not os.path.exists(dir):return file_paths []for root, directories, files in os.walk(dir):for filename in files:filepath os.p…

锁策略和死锁问题

锁策略 乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁 vs 互斥锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁死锁死锁产生的必要条件如何简单的解决死锁问题 小结 这里不是描述的某个特定锁,而是描述的锁的特性,描述的是"一类锁". 乐观锁 vs 悲观…

Java配置环境变量的过程

第一步&#xff1a;先找到你下载java的文件夹。 第二步&#xff1a;点击它进入看到新的文件夹继续点击。 第三步&#xff1a;点击bin文件。 第四步&#xff1a;点进去bin文件之后复制上述文件的地址。 第五步&#xff1a;回到你的电脑位置右键鼠标点击空白位置出现属性点进去 第…

设计模式胡咧咧之策略工厂实现导入导出

策略模式&#xff08;Strategy Pattern&#xff09; 定义&#xff1a; 定义了一组算法&#xff0c;将每个算法都封装起来&#xff0c;并且使它们之间可以互换。 本质: 分离算法&#xff0c;选择实现 应用场景 何时使用 一个系统有许多类&#xff0c;而区分他们的只是他们直接…

Ubuntu22.04.4 - MySQL8 - 笔记

MySQL8在Ubuntu22.04.4环境下的笔记 一、安装 sudo apt update sudo apt install mysql-server sudo systemctl status mysql 二、卸载 sudo apt remove --purge mysql-* sudo apt autoremove dpkg --list | grep mysql查询是否还存在相关的依赖组件 dpkg -l |grep ^rc|awk {p…

复合机器人在磁钢上下料中的应用及其优势分析

复合机器人是一种集成了移动机器人和工业机器人功能的设备&#xff0c;其独特之处在于拥有“手、脚、眼、脑”的综合能力&#xff0c;从而实现了更高的灵活性和操作效率。在磁钢上下料的应用场景中&#xff0c;复合机器人能够发挥显著的优势。 首先&#xff0c;复合机器人可以根…

Photomator 3.3.5 (macOS Universal) - 照片编辑软件

Photomator 3.3.5 (macOS Universal) - 照片编辑软件 适用于 Mac、iPhone 和 iPad 的终极照片编辑器 请访问原文链接&#xff1a;https://sysin.org/blog/photomator/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Photomat…

Nodejs 第六十五章(SDL单设备登录)

单设备登录 SDL&#xff08;Single Device Login&#xff09;是一种单设备登录的机制&#xff0c;它允许用户在同一时间只能在一个设备上登录&#xff0c;当用户在其他设备上登录时&#xff0c;之前登录的设备会被挤下线。 应用场景 视频影音&#xff0c;防止一个账号共享&a…

关于项目中加入线程池,导致JVM性能急剧下降的问题

在项目中&#xff0c;为了提高新系统服务的并发处理能力&#xff0c;我在项目中加入了线程池。 由于原来的项目是单线程的一个服务&#xff0c;或者说是一个少线程的服务. 所以公司前辈&#xff0c;将jvm的TLAB 参数配置进行关闭了。 TLAB&#xff08;Thread Local Allocation …

计算机网络 -- 网络编程基础

一 学习准备 1.1 IP地址 在 前文中我们提到过: IP 是全球网络的基础&#xff0c;使用 IP 地址来标识公网环境下主机的唯一性&#xff0c;我们可以根据 目的IP地址 进行跨路由器的远端通信。 但是我们也提到了&#xff0c;通过 IP 地址&#xff0c;只能寻找到目标主机&#xff…

视频质量度量VQM算法详细介绍

视频质量评价 视频质量评价(Video Quality Assessment,VQA)是指通过主观、客观的方式对视频图像的内容、画质等,进行感知、衡量与评价。 ITU definations subjective assessment: the determination of the quality or impairment of programme-like pictures presented…

MASA Framework-原理分析(6)

MASA Framework的原理分析主要涉及到其核心组件、架构设计和运行机制等多个方面。以下是对MASA Framework原理的深入解析&#xff1a; 1. 核心组件与功能 MASA Framework的核心组件包括服务容器、数据存储、消息队列以及监控和管理工具等。这些组件共同协作&#xff0c;为开发…

桌面应用框架概论

目录 桌面应用框架概论 1.介绍 2.优缺点 3.总结 桌面应用框架概论 1.介绍 桌面应用框架种类繁多,以下是一些主要的框架: Electron:这是一个用于创建跨平台桌面应用的开源框架。它允许开发者使用Web技术(HTML、CSS和JavaScript)来构建桌面应用程序,使得桌面应用的开…

字符串的一些有趣案例

文章目录 简介删除文本中的括号和其中的文本 简介 分享python 字符串操作的一些有趣的案例&#xff1a; 正则表达式format … 删除文本中的括号和其中的文本 存在中英文括号混用&#xff0c;故要考虑到所有可能到情况 import re def remove_all_parentheses(text): # 正…

MongoDB聚合运算符:$replaceOne

MongoDB聚合运算符&#xff1a;$replaceOne 文章目录 MongoDB聚合运算符&#xff1a;$replaceOne语法参数字段说明 使用$replaceOne 与 Null$replaceOne 和排序规则$replaceOne 和 Unicode 规范化 举例 $replaceOne聚合运算在输入的字符串中搜索目标字符串&#xff0c;并使用指…

【代码随想录】【动态规划】day48:打家劫舍

打家劫舍1 def rob(self, nums):""":type nums: List[int]:rtype: int"""# 分为两个情况&#xff0c;偷还是不偷&#xff0c;# dp[i]为考虑到第i个房间时的最大值if len(nums) 0: # 如果没有房屋&#xff0c;返回0return 0if len(nums) 1: #…

【 书生·浦语大模型实战营】作业(五):LMDeploy 量化部署

【 书生浦语大模型实战营】作业&#xff08;五&#xff09;&#xff1a;LMDeploy 量化部署 &#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系…

Linux debian gdb dump

1.开发背景 记录 debian 下应用程序崩溃调试方法 2.开发需求 程序越界可以定位到越界的位置附近 3.开发环境 debian 操作系统&#xff0c;如果不支持需要查看是否存在对应的可执行文件 4.实现步骤 4.1 设置 dump 输出大小 ulimit -c unlimited # 设置输出大小 生成core 文…