Part02 ☀️
Part02 ☀️
今日目标
- SpringBoot入门案例 ✏️ ❤️
- SpringBoot进阶案例
- JSON的概念数据传输格式
- 请求消息获取和响应消息封装请求和响应
- Tomcat端口修改配置文件
- SpringBoot常用注解
- SpringIOC的概念
1 SpringBoot入门 ✏️ ❤️
1.1 Boot概述 🍐
SpringBoot
在没有正式的学习SpringBoot之前,我们要先来了解下什么是Spring。
我们可以打开Spring的官网(https://spring.io),去看一下Spring的简介:Spring makes Java simple。

Spring的官方提供很多开源的项目,我们可以点击上面的projects,看到spring家族旗下的项目,按照流行程度排序为:

Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。而我们在项目开发时,一般会偏向于选择这一套spring家族的技术,来解决对应领域的问题,那我们称这一套技术为spring全家桶 。

而Spring家族旗下这么多的技术,最基础、最核心的是SpringFramework。其他的spring家族的技术,都是基于SpringFramework的,SpringFramework中提供很多实用功能,如:依赖注入、事务管理、web开发支持、数据访问、消息服务等等。

而如果我们在项目中,直接基于SpringFramework进行开发,存在两个问题:配置繁琐、入门难度大。

所以基于此呢,spring官方推荐我们从另外一个项目开始学习,那就是目前最火爆的SpringBoot。
通过springboot就可以快速的帮我们构建应用程序,所以springboot呢,最大的特点有两个 :
- 简化配置
- 快速开发
Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 。

SpringBoot 几乎霸占了整个微服务市场, 所以,大家在日常工作学习过程中,还是要学习SpringBoot
接下来,我们就直接通过一个SpringBoot的web入门程序,让大家快速感受一下,基于SpringBoot进行Web开发的便捷性。🎯
总结
课堂作业
- 为什么要学习Springboot?(提示:地位、市场占有率、企业招聘要求)
- Spring Boot最大的特点是什么?🎤
1.2 Boot入门程序 ✏️
入门程序
需求:基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串 "Hello World ~"。

代码操作
开发步骤
第1步:创建SpringBoot工程并添加启动类
第2步:定义HelloController类,添加方法hello,并添加注解
第3步:测试运行
背景介绍:

因此,需要使用maven方式创建Boot工程
Spring Boot 官方不再支持 Spring Boot 的 2.x 版本了,之后全力维护 3.x;而 Spring Boot 3.x 对 JDK 版本的最低要求是 17!
而国内主流JDK为:8和11,且企业大部分使用SpringBoot2.x的版本,因此需要通过Maven创建2.x的项目
1、创建一个项目

2、检查Maven配置是否正确

3. 项目创建成功后,在pom.xml中添加<parent></parent>
父依赖,企业中使用2.7.4以下版本较多
<!-- springboot父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/>
</parent>
然后在引入依赖管理和插件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- lombok的依赖,能免除get和set方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.4</version>
</plugin>
</plugins>
</build>
4. 整体效果如下:

5. 然后在src-java下创建包名cn.itcast(也可以是你自己公司域名的反写),并在包下创建启动类 👇
package cn.yangeit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
System.out.println("项目启动成功!!!!");
}
}
在启动类的目录下,创建HelloController.java 内容如下:
同学们,千万不要对着一个一个字母敲,而是要充分利用idea的自动提示哦!!!
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(String name){
return "hello "+name;
}
}
如果不清晰流程,可以点击下面的链接查看详细流程👇
- 启动项目
- 打开浏览器,访问链接:http://localhost:8080/hello?name=yange
- 观察浏览器是否有响应,已经参数是否在idea的控制台中正确输出输出

需求:修改服务器端口
默认端口是:8080---修改为8848
修改服务器端口
YAML 是 JSON 的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代 application.properties
YAML 的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。

- 在 application.yml 中配置
server:
port: 80
1.3 SpringBoot入门程序解析 🍐
入门程序我们已经搞定了,接下来,我们就一起来解析一下我们所编写的入门程序。
入门程序解析
Tomcat,是一个开源的Web应用服务器。 它可以看作是一个“小型网站服务器”,主要用于运行Java编写的网站

1. main方法如何启动Tomcat ?

因为我们在创建springboot项目的时候,选择了web开发的起步依赖 spring-boot-starter-web。而spring-boot-starter-web依赖,又依赖了spring-boot-starter-tomcat,由于maven的依赖传递特性,那么在我们创建的springboot项目中也就已经有了tomcat的依赖,这个其实就是springboot中内嵌的tomcat。
而我们运行引导类中的main方法,其实启动的就是springboot中内嵌的Tomcat服务器。 而我们所开发的项目,也会自动的部署在该tomcat服务器中,并占用8080端口号 。

1.4 SpringBoot进阶程序 ❤️
SpringBoot进阶程序
访问boss直聘、百度等网站,发现返回的数据,不是简单的字符串,而是类似这样的,👇 https://www.zhipin.com/wapi/zpCommon/data/getCityShowPosition
上面这种特殊字符串叫做JSON,是企业中常用的前端后端交互的数据格式!!
下图是我们中州养老的部署图,发现,数据是来自数据库,数据库中的数据是一条条的,类似一个个对象,因此返回也是JSON格式
接下来,做一个案例,来体验SpringBoot项目的简便特性!!
代码操作
相关信息
- 创建User类,定义变量
- 根据HelloController的样子,创建UserController,将参数和返回值进行修改
- 运行测试,访问
创建User类,定义变量
@Data
public class User {
// id,name,age,password,department,description,hobby
private Integer id;
private String name;
private Integer age;
private String password;
private String department;
private String description;
private String hobby;
}
@RestController
public class UserController {
@RequestMapping("/user")
public User getUserById(Integer id){
//模拟数据库查询,是假数据
User user = new User();
user.setId(id);
user.setName("张三");
user.setAge(20);
user.setDescription("张三很帅");
user.setDepartment("研发部");
user.setHobby("打篮球");
return user;
}
}
- 启动项目
- 打开浏览器,访问链接:http://localhost:8080/user?id=3
- 观察浏览器是否有响应,已经参数是否在idea的控制台中正确输出输出

2. SpringBoot获得参数和数据响应 ✏️🍐
SpringBoot获得参数和数据响应
本节,我们主要讲解,如何接收页面传递过来的请求数据

- 接收普通类型参数传递
- 接收json数据参数
- 接收路径参数
响应
- 返回一般Json数据
请求参数获取实操
代码操作
简单参数 :在向服务器发起请求时,向服务器传递的是一些普通的请求数据。
参数格式:
http://localhost:8848/users/simpleParam?name=韩立&age=188
路径上的参数名字和方法的形参必须一模一样,类型也要一致
操作步骤流程: 👇👇

路径参数:
参数格式:
http://localhost:8848/users/112
- 前端:通过请求URL直接传递参数
- 后端:使用
{…}
来标识该路径参数,需要使用@PathVariable
获取路径参数

响应数据实操
SpringBoot工程,Controller中的方法返回值对象,自动转成了Json字符串

总结
课堂作业
- 根据上述提示,完成路径参数和普通参数的传值,可以参考上述的代码🎤
3. Spring核心概念 🍐 🍐
Spring核心概念
之前我们在编写代码时,需要什么对象,就直接new一个就可以了。 这种做法呢,层与层之间代码就耦合了,费时间且不方便,最好是拿来就用!! 有点像 饭来张口衣来伸手!那么得这么做:
1). 不能使用new对象
2). 应用程序中用到这个对象,就直接从容器中获取,不需要创建
我们想要实现上述解耦操作,就涉及到Spring中的两个核心概念:
- 控制反转: Inversion Of Control,简称IOC。
对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。 对象的创建权由程序员主动创建转移到容器(由容器创建、管理对象)。这个容器称为:IOC容器或Spring容器
- 依赖注入: Dependency Injection,简称DI。
容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
程序运行时需要某个资源,此时容器就为其提供这个资源。
IOC容器中创建、管理的对象,称之为:bean对象

总结
课堂作业
- 截图下图,说说什么IOC,以及IOC有什么好处?🎤
