Spring Boot 入门学习笔记
0x01 前言
大一选修课C++/JAVA二选一,选学了C++。但在后续课程中,发现JAVA的用途很多,所以简单学习了JAVA的语法。同时,也开始了我的Spring Boot 春季|家 (spring.io)之旅。
在学习过程中,遇到了挺多问题,包括Spring Boot 在IDEA 中的环境搭建和语法等。因此写下这篇文章,作为学习记录和总结。
0x02 一些简单概念的介绍
Spring 和 Spring Boot
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架什么是springboot? - 知乎 (zhihu.com)。
Spring Boot是一个基于Java的开源框架,用于创建微服务Spring Boot简介 - Spring Boot教程 (yiibai.com)。
Gradle 和 Maven
Gradle和Maven都是项目自动构建工具。
Maven的配置文件是.pom
文件。POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示。
Gradle是一个完全自动化的构建自动化系统,基于Groovy
语言。
Gradle Vs Maven:Java项目构建工具如何选择? - 腾讯云开发者社区-腾讯云 (tencent.com)
深入了解gradle和maven的区别 - flydean - 博客园 (cnblogs.com)
0x03 Spring Boot 在IDEA上的简单构建
【首先新建项目】
【Spring Initializr 需要先下载 Spring Boot Helper】
【Maven 构建工具下载时,遇到了程序直接崩溃的情况,后更新到IDEA最新版本解决】
【红框里是,项目需要用到的依赖项】
【自己当时搭建时遇到的问题很多,远不像上面这样简单】
[目录结构]【main
方法和@SpringBootApplication
绑定】
0x04 Spring Boot简单入门语法[Maven依赖]
4.1 Spring Boot 典型布局
【注 - Java推荐的包声明命名约定是反向域名。
例如 - com.example.demo
】
spring boot #应用的根文件目录,名称是在创建应用的时候初始化的
+-.idea #IntelliJ IDEA 生成,用于配置应用信息的文件目录
+- demo
+- .mvn #记录你要使用的maven版本
+- src #Spring Boot 生成,存放应用源代码的文件目录
+- main #存放程序实际执行相关代码
+- java #存放后缀为 .java 的代码文件
+- com.example.demo #代码包和代码文件,DemoApplication 是整个应用程序的启动入口。
+- resources #存放静态文件,模板文件,应用配置文件等资源或配置类文件。
+- static #例如 .css
+- templates #例如 .html
+- application.properties # Spring Boot 活动配置
+- test #存放程序测试相关代码
+- target #应用构建时生成,主要存放了源代码编译后的 class 文件,相关的配置文件以及打好的包文件等用于实际执行的文件
+- .gitignore #Spring Boot生成,版本控制系统 Git 的配置文件,表示忽略提交
+- course.iml #工程配置文件:包含了当前工程的一些配置信息,比如模块信息,Java 组件,Maven 组件等等以及一些模块的路径信息和依赖信息
+- HELP.md #帮助文档,提供了 Spring Boot相关文档和教程
+- mvnw 和 mvnw.cmd #和.mvn 目录下文件搭配使用,是执行 mvnw 命令的入口
+- pom.xml #生成的项目对象模型文档,主要描述了项目的 Maven 坐标和依赖关系等信息,是项目级别的配置文件
具体参见Spring Boot 项目的这些文件都是干啥用的? - 知乎 (zhihu.com)
4.2 Spring Boot 活动配置
默认情况下,application.
属性将用于运行Spring Boot应用程序。 如果想使用基于配置文件的属性,可以为每个配置文件保留单独的属性文件,如下所示 -
文件:application.properties -
server.port = 8080
spring.application.name = demoservice
Shell
文件:application-dev.properties - #开发环境
server.port = 9090
spring.application.name = demoservice
Shell
文件:application-prod.properties - #生产环境
server.port = 4431
spring.application.name = demoservice
文件:application-test.properties- #测试环境
具体的配置文件会被加载,需要在application.properties
文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
例如:
spring.profiles.active=dev
#就会加载application-dev.properties配置文件内容
4.3 Spring Boot 构建RESTful Web服务
【提示: RESTful 是一种便于不同软件/程序在网络中互相传递信息的架构风格】什么是 RESTful Web服务 - 腾讯云开发者社区-腾讯云 (tencent.com)
RESTful 特点:
- 1、资源:每一个 URI 都代表一种资源;
- 2、方法:客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
- 3、方法操作资源:通过不同方法来操作资源,导致了资源不同的表现形式。
- 4、操作结果表现:资源的表现形式可以是JSON,XML或者HTML等;
- 5、无状态:客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息
如果是Maven用户,请使用以下代码在pom.xml 文件中添加以下依赖项 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
XML
如果是Gradle用户,请使用以下代码在build.gradle 文件中添加以下依赖项。
compile('org.springframework.boot:spring-boot-starter-web')
【注:要构建RESTful Web服务,需要将Spring Boot Starter Web依赖项添加到构建配置文件中。】
Rest控制器
@RestController
注释用于定义RESTful Web服务。它提供JSON,XML和自定义响应。其语法如下所示 -
import org.springframework.stereotype.Controller;
@RestController
public class ProductServiceController {}
@RestController // 不能跳转到html
@Controller // 可重定位到html文件
【详解https://blog.csdn.net/Linuxprobe18/article/details/113103223】
请求映射
@RequestMapping
注释用于定义访问REST端点的Request URI。可以定义Request方法来使用和生成对象。默认请求方法是:GET
。
import org.springframework.http.ResponseEntity;
@RequestMapping(value = "/products")
public ResponseEntity<Object> getProducts() { }
请求主体
@RequestBody
注释用于定义请求正文内容类型。
public ResponseEntity<Object> createProduct(@RequestBody Product product) {}
路径变量
@PathVariable
批注用于定义自定义或动态请求URI。 请求URI中的Path变量定义为花括号{}
,如下所示 -
public ResponseEntity<Object> updateProduct(@PathVariable("id") String id) {}
请求参数
@RequestParam
注释用于从请求URL读取请求参数。默认情况下,它是必需参数。还可以为请求参数设置默认值,如下所示 -
public ResponseEntity<Object> getProduct(
@RequestParam(value = "name", required = false, defaultValue = "honey") String name) {
}
特别关注
-
@Controller 注释下的类,@RequestMapping 请求映射跳转到对应html文件。
-
@Controller 注释下的类,要想@RequestMapping 请求映射不跳转到对应html文件,需要如下组合实现:
@RequestMapping("/sql-test") @ResponseBody
即有等价于 @RestController的效果
【注:上述结论实践中总结,不一定全面,有疑问或错误欢迎交流】
参考代码如下
4.4 Spring Boot 文件上传与下载
文件上传
文件下载
4.5 Spring Boot MySql数据库连接
application.properties
文件添加:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/monitor?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=1000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
# 注monitor为数据库名称
pox.xml
文件添加:
<!-- mysql jdbc -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
开启MySql服务,即可连接成功
0x05 结语
Spring Boot 很强大、也很便捷。它极大降低了配置成本,让更多精力回归到开发本身。同时前后端间的耦合性很低,有利与团队合作与开发。
在这篇文章中,更多的是对于学习后的一种记录与总结,因而引用极多。有Spring Boot 在IDEA上的安装教程、入门级语法等。后续在Spring Boot 的继续学习中,也会持续更新相关知识点。同时文章中的观点或表述,如有疑问或错误欢迎交流指正,QQ2668493074
。
写在最后,本文引用了大量文章链接,如有侵权,联系即删!!!