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
。
写在最后,本文引用了大量文章链接,如有侵权,联系即删!!!
Spring Boot 入门学习笔记的更多相关文章
- Spring Boot入门学习
1. Spring Boot概述 1.1.什么是Spring Boot SpringBoot是一个可使用Java构建微服务的微框架.是Spring框架及其社区对"约定优先于配置"理 ...
- Spring Boot入门学习必知道企业常用的Starter
SpringBoot企业常用的 starter SpringBoot简介 SpringBoot运行 SpringBoot目录结构 整合JdbcTemplate @RestController 整合JS ...
- Spring BOOT的学习笔记
1,静态文件夹src/main/resources/static下的,图片必须放在images文件夹下才能访问,直接放在static下不能访问 2,配置热部署,否则修改下Html,图片都得重启 htt ...
- Spring Boot入门学习,解决复杂的spring配置文件及jar包
转载:https://www.cnblogs.com/wmyskxz/p/9010832.html 总结 为何出了这样的框架? Spring Boot 是所有基于 Spring 开发的项目的起点.Sp ...
- Spring boot + jdbc学习笔记
pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- Spring Boot + WebSocket 学习笔记
首先需要了解一下背景,什么是WebSocket以及为什么要用WebSocket. 在常见的Web应用中,客户端与服务器通信,都是通过HTTP协议进行通信,客户端一次请求,服务端一次响应.而WebSoc ...
- spring boot入门学习---1
1.maven配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- Spring.Net 入门学习笔记-----one
一. 基本概念 Spring.Net是一个轻量级的控制反转(Ioc)和面向切面的(Aop)的容器框架: Ioc:控制反转:简单的说就是将创建对象的控制权转交给外部容器(IApplicationC ...
- Spring的入门学习笔记 (AOP概念及操作+AspectJ)
AOP概念 1.aop:面向切面(方面)编程,扩展功能不通过源代码实现 2.采用横向抽取机制,取代了传统的纵向继承重复代码 AOP原理 假设现有 public class User{ //添加用户方法 ...
- Spring的入门学习笔记 (注解)
Spring的bean管理(注解) 注解 1.代码里面特殊标记(ep:@Test),使用注解完成一些相关功能 2.注解写法 @注解名称(属性名称=属性值) 3.可以用在类,方法,属性上都可以 4.Sp ...
随机推荐
- 根本不常用知识之Generator
首先babel链接很重要 https://www.babeljs.cn/repl#?browsers=&build=&builtIns=false&corejs=3.6& ...
- MySQL之char、varchar、text类型
在存储字符串时, 可以使用char.varchar或者text类型, 那么具体使用场景呢? 参考下面这个表结构: 分析 一,char类型 char列的长度固定为创建表时声明的长度.长度可以为从0到25 ...
- 【BOOK】解析库—XPath
XPath-XML Path Language 1.安装 lxml库 2.XPath常用规则 3.XPath解析页面 from lxml import etree text = ''' <div ...
- <一>JDK/MAVEN/IDEA/MYSQL/GIT详细环境安装
一. 安装JDK 1. jdk安装包下载地址:https://www.oracle.com/java/technologies/javase-jdk16-downloads.html 2. 解压缩软 ...
- gets,fgets,getchar,fgetc
以上四个函数都是读取外部输入的函数.可以使stdin,也可以是文件.以下都是在C语言中的应用 关于gets和fgets都能够读取一行,一行结束的标志是"回车".都有弊端gets(s ...
- css中双冒号和单冒号区别
:--是指的伪类 ::--是指的伪元素 1.字面意思: 伪类,1.css中有类选择器,某些元素并未定义类名,就可以通过伪类赋予样式,如:[:nth-child(n)]:2.伪类可以应用于元素执行某种状 ...
- php success error 封装跳转
/** * Warning提示信息 * @param string $type 提示类型 默认支持success, error, info * @param string $msg 提示信息 * @p ...
- 二,使用axios
1,下载https://unpkg.com/axios@1.3.2/dist/axios.min.js保存在js目录下,命名为axios.js 2,http.js let baseUrl = &quo ...
- 使用React脚手架初始化项目
1.npx create-react-app my-app------>是项目名 2.cd my-app 3.npm start
- uni-app 小程序在iOS系统无法长按复制问题
最近在使用uni-app开发移动端应用,有客户反映微信小程序版本在使用是无法长按复制问题,在安卓系统上却是正常的. 检查了下代码,对text标签都设置了selectable属性,寻找万能的度娘还是没有 ...