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.hqwc.cn/news/631021.html

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

相关文章

从入门到实践,详解 Web 爬虫技术(IP池免费送)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Leetcode138_随机链表的复制

1.leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2.题目描述 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 …

解决 vue install 引发的 failed Error: not found: python2 问题

发生 install 异常时&#xff0c;提示信息如下所示&#xff1a; npm ERR! code 1 npm ERR! path U:\cnblogs\fanfengping-dtops\fanfengping-dtops-front\node_modules\node-sass npm ERR! command failed npm ERR! command U:\Windows\system32\cmd.exe /d /s /c node scripts…

北大字节联合发布视觉自动回归建模(VAR):通过下一代预测生成可扩展的图像

北大和字节发布一个新的图像生成框架VAR。首次使GPT风格的AR模型在图像生成上超越了Diffusion transformer。 同时展现出了与大语言模型观察到的类似Scaling laws的规律。在ImageNet 256x256基准上,VAR将FID从18.65大幅提升到1.80,IS从80.4提升到356.4,推理速度提高了20倍。 相…

PLC怎么接入互联网

几十年来&#xff0c;PLC都是用于现场设备的自动化控制。随着移动互联网技术的发展&#xff0c;移动办公的便捷性使PLC联网进行远程监控操作的需求越来越多。那PLC怎么接入互联网呢&#xff1f; PLC的通讯基本都是基于现场的通讯&#xff0c;无论是RS485,RS232还是 TCP协议&am…

泛微 E-Office 9.5版本存在ajax.php接口任意文件上传漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 泛微 E-Office 9.5版本存在代码问题漏洞&#xff0c…

第二部分 Python提高—GUI图形用户界面编程(七)

菜单组件 文章目录 主菜单 GUI 程序通常都有菜单&#xff0c;方便用户的交互。我们一般将菜单分为两种&#xff1a;主菜单和快捷菜单(上下文菜单)。主菜单通常位于GUI 程序上方,通过鼠标右键单击某个组件对象而弹出的菜单&#xff0c;一般是与该组件相关的操作。 主菜单 主菜…

CUDA编程---线程束洗牌指令

从Kepler系列的GPU&#xff08;计算能力为3.0或更高&#xff09;开始&#xff0c;洗牌指令&#xff08;shuffle instruction&#xff09;作为一种机制被加入其中&#xff0c;只要两个线程在相同的线程束中&#xff0c;那么就允许这两个线程直接读取另一个线程的寄存器。 洗牌指…

太阳能路灯光伏板的朝向设计问题

题目&#xff1a;太阳能路灯光伏板的朝向设计问题 难度对标几乎每一年的国赛A题。 QQ群&#xff1a;592697532 公众号&#xff1a;川川菜鸟 文章目录 背景问题问题一问题二问题三 题目解读相关公式&#xff08;必备&#xff09;太阳辐射的计算光伏板接收的辐射光学效率大 气透…

Linux 系统下的进程间通信 IPC 入门 「中」

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/39XQUQtGC3Ow-0s0JKWnog 信号量 信号量一般用于配合共享内存的数据传输&#xff0c;共享内存被多个进程之间共享访问&#xff0c;各个进程对共享…

大型网站系统架构演化实例_3.使用服务集群改善网站并发处理能力

1.使用服务集群改善网站并发处理能力 使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时&#xff0c;不要企图去更换更强大的服务器&#xff0c;对大型网站而言&#xff0c;不管多么强大的服务器&#xff0c;对大型网站而言&…

【Linux】—管理、设置防火墙规则(firewalld详解)

【Linux】—管理、设置防火墙规则&#xff08;firewalld详解&#xff09; 一、firewalld1.1 服务的启动、停止1.2 查看和设置默认区域1.3 使用firewalld进行规则配置1.4 重新加载防火墙配置1.5 查询已开放的端口、已允许的服务 &#x1f496;The Begin&#x1f496;点点关注&am…