一、Spring Boot环境配置
1.1 Java开发环境
确保你的计算机已经安装了Java Development Kit(JDK)。建议使用JDK 17,可以从Oracle官方网站上下载并安装。
1.1.1下载安装包配置环境变量
-
下载JDK:https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe ( sha256)
-
运行安装程序:双击下载的JDK安装包,并按照安装向导的指示进行操作。根据操作系统的要求,可能需要管理员权限。
-
设置安装路径:选择JDK的安装路径。默认情况下,它会被安装在操作系统的默认目录中。你可以选择接受默认路径,或自定义一个路径。
1.1.2 配置环境变量
-
打开“控制面板” -> “系统和安全” -> “系统”。
-
点击“高级系统设置”链接,打开“系统属性”窗口。
-
在“系统属性”窗口中,点击“环境变量”按钮。
-
在“环境变量”窗口中,找到“系统变量”部分,点击“新建”按钮。
-
输入变量名为
JAVA_HOME
,变量值为JDK的安装路径(例如:C:\Program Files\Java\jdk1.8.0_271
)。 -
找到“系统变量”中的“Path”变量,点击“编辑”按钮。
-
在“编辑环境变量”窗口中,点击“新建”按钮。
-
输入变量值为
%JAVA_HOME%\bin
。 -
依次点击“确定”保存所有设置。
1.1.3 验证安装
java -version
javac -version
如果能够正确显示Java版本信息,则说明安装成功。
1.2 构建工具(Maven)
Spring Boot支持多种构建工具,如Maven和Gradle。你可以选择其中一个构建工具进行项目的管理和依赖管理。确保已经正确安装并配置了所选的构建工具。
1.2.1下载及配置环境变量
-
下载Maven:访问Apache Maven官方网站:https://maven.apache.org/download.cgi
-
解压缩Maven:将下载的Maven二进制压缩包解压到任意位置。建议解压到一个稳定、不易更改的目录中,例如
/usr/local
或C:\Program Files
。 -
配置环境变量(Windows):
-
打开“控制面板” -> “系统和安全” -> “系统”。
-
点击“高级系统设置”链接,打开“系统属性”窗口。
-
在“系统属性”窗口中,点击“环境变量”按钮。
-
在“环境变量”窗口中,找到“系统变量”部分,点击“新建”按钮。
-
输入变量名为
MAVEN_HOME
,变量值为Maven解压所在的绝对路径(例如:C:\apache-maven-3.8.8
)。 -
找到“系统变量”中的“Path”变量,点击“编辑”按钮。
-
在“编辑环境变量”窗口中,点击“新建”按钮。
-
输入变量值为
%MAVEN_HOME%\bin
。 -
依次点击“确定”保存所有设置。
-
-
验证安装:打开命令提示符或终端窗口,并运行以下命令来验证Maven是否正确安装:
mvn -version
如果能够正确显示Maven版本信息,则说明安装成功。
Maven下载安装及配置环境变量(图文介绍):https://blog.youkuaiyun.com/u012660464/article/details/114113349
1.2.2 配置Maven仓库
①下面是配置Maven本地仓库的步骤:
-
打开Maven的配置文件:在你的计算机上找到Maven的安装目录,进入
conf
文件夹。在该文件夹中,你会找到一个名为settings.xml
的配置文件。 -
编辑配置文件:使用文本编辑器打开
settings.xml
文件。 -
配置本地仓库路径:在
<settings>
标签内,找到<localRepository>
元素。这个元素用于指定本地仓库的路径,默认情况下会被注释掉。取消注释并填写你想要设置的本地仓库路径。例如:
<localRepository>/path/to/your/local/repository</localRepository>
将 /path/to/your/local/repository
替换为你希望使用的本地仓库路径,。
保存并关闭配置文件
默认情况下,Maven将本地仓库设置为用户主目录下的 .m2
文件夹(例如:C:\Users\YourUsername\.m2
或 /home/username/.m2
)。你可以根据需要将其更改为其他路径,如:D:\develop\maven3.8.8\mvn_resp
。
②配置阿里云远程仓库的步骤:
-
打开Maven的配置文件:在你的计算机上找到Maven的安装目录,进入
conf
文件夹。在该文件夹中,你会找到一个名为settings.xml
的配置文件。 -
编辑配置文件:使用文本编辑器打开
settings.xml
文件。 -
在
<settings>
标签内,找到<mirrors>
元素。如果该元素不存在,则手动添加它。 -
在
<mirrors>
元素内,添加阿里云远程仓库的配置。例如:
<mirrors>
<mirror>
<id>aliyun</id>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
-
上述示例配置了一个名为
aliyun
的镜像,名称为Aliyun Maven Mirror
,URL为https://maven.aliyun.com/repository/public
,<mirrorOf>
元素用于指定这个镜像将代理的仓库。central
,表示代理中央仓库。 -
保存并关闭配置文件
配置完成后,Maven将使用阿里云作为远程仓库,从阿里云下载项目的依赖库。
1.2.3 配置JDK和Maven
IDEA中如何配置JDK:https://juejin.cn/post/7024078227282853924
IDEA中如何配置Maven:https://juejin.cn/post/6844904096961396749?searchId=20230905154132D113B687F6BB6AD98CC3
二、创建项目
2.1使用Maven创建Spring Boot项目
2.1.1 创建Maven项目
-
打开 IntelliJ IDEA,选择 "File" -> "New" -> "Project"。
-
在左侧面板中选择 "Maven",然后点击 "Next
-
在 "Project SDK" 中选择你想要使用的 JDK 版本,然后点击 "Next"。
-
在 对话框中,配置项目的基本信息:
-
Group: 设置项目的 GroupId,例如
com.lzzy
-
Artifact: 设置项目的唯一标识符,一般和项目名相同,例如
my-spring-boot1
-
Name: 设置项目的名称
-
Version:使用默认生成的版本号
-
-
创建完成后会默认打开Maven项目生成的
pom.xml
依赖文件。
4.1.2 添加Spring Boot相关依赖
编辑项目的 pom.xml
文件,添加 Spring Boot 相关的依赖。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.15</version>
</parent>
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.1.3 编写主程序启动类
-
创建一个 Spring Boot 应用程序的主类,通常命名为
Application.java
,包含main
方法。这个类将作为应用程序的入口点
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication//这个注解是标注一个Spring Boot应用
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2.1.4 运行启动项目
运行 Spring Boot 应用程序:右键点击 Application 类,选择 "Run Application.main()",或者点击类上方的绿色三角形按钮。
打开浏览器,并访问 http://localhost:8080/hello
,你将会看到输出 Hello, world!
。
三、核心配置与注解
3.1 全局配置文件
更多配置属性,详见官网https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.htm
3.2 application.properties配置文件
3.2.1 主要作用
-
简化配置:Spring Boot致力于简化配置,通过application.properties文件,开发人员可以集中管理大部分应用程序的配置。相比传统的XML或Java配置方式,使用键值对的形式,使配置文件更加简洁和易于维护。
-
外部化配置:application.properties文件支持外部化配置,即将配置项的值从代码中分离出来,在不修改代码的情况下,通过修改配置文件来改变应用程序的行为。这样可以方便地进行配置的切换和动态调整。
-
配置多个环境:Spring Boot允许在不同的配置文件中定义相同的属性,通过激活不同的配置文件来选择不同的应用程序行为。例如,可以使用application-dev.properties和application-prod.properties文件来分别配置开发环境和生产环境的属性。
-
支持属性引用和覆盖:通过
${key}
形式,可以在application.properties文件中引用其他属性的值,使属性之间可以相互关联和依赖。而且使用相同的键在不同的配置文件中定义,可以实现针对不同环境的属性覆盖。
3.2.2 基本语法
-
键值对格式:每行表示一个配置项,采用
key=value
的格式,其中"key"表示配置项的名称,"value"表示配置项的值。 -
注释:可以使用'#'号在配置文件中添加注释,'#'号后面的内容将被忽略。例如:
# 这是一个注释
-
引号:如果配置项的值包含特殊字符或空格,可以使用双引号或单引号将其括起来。例如:
key="value with spaces"
-
特殊字符的转义:如果配置项的值中包含特殊字符,可以使用反斜杠进行转义。例如:
key=value\#with\#hash
3.2.3 举例说明
①基本数据类型:
server.port=8081
server.servlet.context-path=/home
persion.name=xiaoming
②复杂数据类型 :
persion.hobby=sing,sport,read
persion.family.mother=mum
persion.family.father=baba
3.3 application.yaml配置文件
3.3.1 .yaml文件的优点
相对于传统的基于键值对的属性文件(如application.properties),使用YAML格式的配置文件更加易读和易写,具有以下特点:
-
结构清晰:YAML使用缩进和层级结构表示数据的关系,使配置文件更具可读性和可维护性。它使用冒号(:)和缩进来标识键值对和层级关系,而不需要像属性文件那样使用等号(=)和点号(.)。
-
支持复杂数据结构:YAML支持列表、映射和嵌套结构,可以方便地表示集合、对象和关联关系等复杂数据结构。这使得配置文件的定义更加灵活,可以更好地适应复杂的配置需求。
-
无需引号:相对于属性文件中需要使用引号包围值的情况,YAML中大部分字符串值无需使用引号括起来。这使得配置文件看起来更加简洁,减少了引号的干扰。
3.3.2 基本语法
- 键值对:使用冒号(:)将键和值分隔,并使用缩进表示层级关系。例如:
key: value
- 层级关系:使用缩进(一般是空格)表示层级关系,子级配置项比父级配置项多两个空格的缩进。例如:
parent:
child: value
-
注释:使用井号(#)表示注释,井号后面的内容将被忽略。例如:
# 这是一个注释
key: value
-
字符串值:大部分字符串值无需使用引号括起来,但如果包含特殊字符、空格或需要保留原样输出,可以使用单引号或双引号将其括起来。例如:
key: value
key2: 'value with spaces'
key3: "value with special characters: !@#$%^&*"
-
数字、布尔值和null:数字、布尔值(大小写敏感的
true
和false
)以及空值(null
)直接使用对应的字面量表示。例如:
count: 10
flag: true
data: null
-
列表:使用连字符(-)表示列表项,并在每个项的前面使用相同的缩进。例如:
list:
- item1
- item2
#或者是
list: [item1, item2]
-
引用其他属性值:可以使用
${}
语法引用其他属性的值。例如:
app:
name: My Application
greeting: Hello, ${app.name}!
#或者是
app: {name: My Applicationm,greeting: "Hello,${app.name}!"}
3.3.3 案例演示
public class Person {
private int id;
private String name;
private List hobbies;
private Map map;
private String[] family;
①application.properties文件中配置写法
#基本数据类型
person.id=10
person.name=lisi
#复杂数据类型
person.hobbies=read,sing,dance
person.map.k1=v1
person.map.k2=v2
person.family=father.mother
②application.yaml文件中配置写法
#基本数据类型
person:
id: 10
name: lisi
#复杂数据类型
hobbies: [read,sing,dance]
map:
k1: v1
k2: v2
family:
- father
- mother
四、Spring Boot和数据库操作
4.1 MySQL安装教程
https://www.jb51.net/article/242736.htm
注意:安装时需要设置用户名和密码的时候,请设置为:用户名root 密码123456
如何使用Navicat创建数据库和表教程:https://blog.youkuaiyun.com/WeiHao0240/article/details/100039403
4.2 项目分层-为什么要分层?
-
方便后续代码进行维护扩展;
-
分层的效果需要让整个团队都接受;
-
各个层职责边界清晰。
4.2 Spring Boot分层
4.2.1 Dao层是什么?
DAO(Data Access Object) 模型就是写一个类,把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间。
Dao是数据访问层,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。
采用DAO模式,建立实体类和数据库表映射(ORM映射)。也就是哪个类对应哪个表,哪个属性对应哪个列。持久层的目的就是,完成对象数据和关系数据的转换。42.2.2 Entity层是什么?
Entity层,顾名思义就是实体层,放置一个个实体,及其相应的set、get方法。如果想要对数据库进行一些操作(比如说读取)的话,就要先写entity层。
怎么写entity层?
-
理解业务需求,分析需要从数据库中读取哪些字段;
-
根据这些字段写对应属性,写完后[自动生成get、set方法]。(这里我用的是IntelliJ IDEA ,快捷键Alt+Insert,然后就有Getter和Setter方法)
4.2.2 Service层是什么?
Service被称作业务逻辑层。顾名思义,它处理逻辑上的业务,而不去考虑具体的实现。
至于为什么service层要使用接口来定义有以下几点好处:
在java中接口是多继承的,而类是单继承的,如果你需要一个类实现多个service,你用接口可以实现,用类定义service就没那么灵活。
要提供不同的数据库的服务时,我们只需要面对接口用不同的类实现即可,而不用重复地定义类。
4.2.3 Servlet层是什么?
Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
Servlet实现过程:
-
客户端发送请求至服务器端;
-
服务器将请求信息发送至 Servlet;
-
Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
-
服务器将响应返回给客户端。
Servlet可以完成以下任务:
-
动态生成HTML文档。
-
将请求转发给Servlet组件。
-
读取客户端的Cookie,以及向客户端写入Cookie。
-
访问服务器的资源,如数据库、 XML、文件对象等。
Servlet的特点:
-
Servlet对象,由Servlet容器(Tomcat)创建。
-
Servlet是一个接口:位于javax.servlet包中。
-
service方法用于接收用户的请求并返回响应。
- 用户访问时多次被执行(可以统计网站的访问量)。
以上就是现学习所归纳的一些笔记,后续可能会把笔记补完。
谢谢!