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上的简单构建

【首先新建项目】

image

【Spring Initializr 需要先下载 Spring Boot Helper】

【Maven 构建工具下载时,遇到了程序直接崩溃的情况,后更新到IDEA最新版本解决】

image

【红框里是,项目需要用到的依赖项】

【自己当时搭建时遇到的问题很多,远不像上面这样简单】

image

[目录结构]【main方法和@SpringBootApplication绑定】

0x04 Spring Boot简单入门语法[Maven依赖]

4.1 Spring Boot 典型布局

【注 - Java推荐的包声明命名约定是反向域名。

例如 - com.example.demo

image

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) {
}
特别关注
  1. @Controller 注释下的类,@RequestMapping 请求映射跳转到对应html文件。

  2. @Controller 注释下的类,要想@RequestMapping 请求映射不跳转到对应html文件,需要如下组合实现:

    @RequestMapping("/sql-test")
    @ResponseBody
    

    即有等价于 @RestController的效果

    【注:上述结论实践中总结,不一定全面,有疑问或错误欢迎交流】

    参考代码如下

image

4.4 Spring Boot 文件上传与下载

文件上传

image

文件下载

image

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服务,即可连接成功

image

0x05 结语

​ Spring Boot 很强大、也很便捷。它极大降低了配置成本,让更多精力回归到开发本身。同时前后端间的耦合性很低,有利与团队合作与开发。

​ 在这篇文章中,更多的是对于学习后的一种记录与总结,因而引用极多。有Spring Boot 在IDEA上的安装教程、入门级语法等。后续在Spring Boot 的继续学习中,也会持续更新相关知识点。同时文章中的观点或表述,如有疑问或错误欢迎交流指正,QQ2668493074

写在最后,本文引用了大量文章链接,如有侵权,联系即删!!!

posted @ 2022-09-03 14:45  Only-xiaoxiao  阅读(127)  评论(0编辑  收藏  举报