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 ...
随机推荐
- Coursera Programming Languages, Part B 华盛顿大学 Week 3
ML Versus Racket 同 函数编程模式 (with constructs that encourage a functional style) 不鼓励 mutation (但提供了支持 m ...
- vue后台管理系统——权限管理模块
电商后台管理系统的功能--权限管理模块 1. 权限管理业务分析 通过权限管理模块控制不同的用户可以进行哪些操作,具体可以通过角色的方式进行控制,即每个用户分配一个特定的角色,角色包括不同的功能权限. ...
- vue后台管理系统——主页布局
电商后台管理系统的功能--页面的整体布局 1. 整体布局 整体布局:先上下划分,再左右划分. 需要使用到ElementUI中提供的Container组件 <el-container> &l ...
- React之一个组件的诞生
此处以input组件为例 input.js import React from 'react' class Input extends React.Component { // ps:使用static ...
- 20200924--图像相似度(奥赛一本通P92 5多维数组)
给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度.说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点.两幅图像的相似度定义为相同像素点数占总像素点数的百分比. ...
- centos7.6镜像
centos7.6镜像 https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/
- systick 理解
systick 中断的优先级往往设置为最低值,而不是最高值:如果设置为最低值不会发生上图标号[6]处的情况,设置为最低可能会被其他中断抢占,延长systick的响应时间,但是这个延迟不会累计,因为sy ...
- MySql 自动设置时间(自动获取时间,填充时间)
应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间: 2.在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意 ...
- jetson TX2 + opencv3.4 + python3 + 双目 +人脸检测
淘宝看到一款很便宜的双目,150元,就买了.想着用它学习一下opencv,好换个工作.当然,也想着能否用它做一些好玩的,比如三维重建之类高大上的东西.先用便宜的入个门,等以后眼界高了再看是不是买那些更 ...
- 量化交易基础-ICIR
IC - information coefficient r=1.5+a1+a2+...+a81 ai={-1,1}随机序列 ()收益序列 E(r)=1.5 期望 cov(r)=81 协方差 std( ...