Part02 ☀️

YangeIT大约 10 分钟tlias智能学习辅助系统MysqlApifoxServletHTTPGETPOST

Part02 ☀️

今日目标

  • SpringBoot入门案例 ✏️ ❤️
  • SpringBoot进阶案例
    • JSON的概念数据传输格式
    • 请求消息获取和响应消息封装请求和响应
    • Tomcat端口修改配置文件
  • SpringBoot常用注解
    • SpringIOC的概念

1 SpringBoot入门 ✏️ ❤️

1.1 Boot概述 🍐

SpringBoot

在没有正式的学习SpringBoot之前,我们要先来了解下什么是Spring。

我们可以打开Spring的官网(https://spring.ioopen in new window),去看一下Spring的简介:Spring makes Java simple。

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

image-20231122163315170
image-20231122163315170

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

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

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

所以基于此呢,spring官方推荐我们从另外一个项目开始学习,那就是目前最火爆的SpringBoot。

通过springboot就可以快速的帮我们构建应用程序,所以springboot呢,最大的特点有两个

  • 简化配置
  • 快速开发

Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 。


image
image

SpringBoot 几乎霸占了整个微服务市场, 所以,大家在日常工作学习过程中,还是要学习SpringBoot

接下来,我们就直接通过一个SpringBoot的web入门程序,让大家快速感受一下,基于SpringBoot进行Web开发的便捷性。🎯

总结

课堂作业

  1. 为什么要学习Springboot?(提示:地位、市场占有率、企业招聘要求)
  2. Spring Boot最大的特点是什么?🎤

1.2 Boot入门程序 ✏️

入门程序

需求:基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串 "Hello World ~"。

image-20231122163417687

代码操作

开发步骤

第1步:创建SpringBoot工程并添加启动类

第2步:定义HelloController类,添加方法hello,并添加注解

第3步:测试运行

背景介绍:

image
image

因此,需要使用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、创建一个项目

imageimage

image
image

2、检查Maven配置是否正确

image
image

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. 整体效果如下:image

保存刷新
保存刷新

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("项目启动成功!!!!");

    }
}


需求:修改服务器端口

默认端口是:8080---修改为8848

修改服务器端口

YAML 是 JSON 的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代 application.properties

YAML 的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。

  1. 在 application.yml 中配置
server:
  port: 80

点击查看修改步骤open in new window👈

1.3 SpringBoot入门程序解析 🍐

入门程序我们已经搞定了,接下来,我们就一起来解析一下我们所编写的入门程序。

入门程序解析

Tomcat,是一个开源的Web应用服务器。 它可以看作是一个“小型网站服务器”,主要用于运行Java编写的网站

image
image

1. main方法如何启动Tomcat

image
image

因为我们在创建springboot项目的时候,选择了web开发的起步依赖 spring-boot-starter-web。而spring-boot-starter-web依赖,又依赖了spring-boot-starter-tomcat,由于maven的依赖传递特性,那么在我们创建的springboot项目中也就已经有了tomcat的依赖,这个其实就是springboot中内嵌的tomcat。

而我们运行引导类中的main方法,其实启动的就是springboot中内嵌的Tomcat服务器。 而我们所开发的项目,也会自动的部署在该tomcat服务器中,并占用8080端口号 。

image
image

1.4 SpringBoot进阶程序 ❤️

SpringBoot进阶程序

访问boss直聘、百度等网站,发现返回的数据,不是简单的字符串,而是类似这样的,👇 https://www.zhipin.com/wapi/zpCommon/data/getCityShowPositionopen in new windowimage

上面这种特殊字符串叫做JSON,是企业中常用的前端后端交互的数据格式!!

下图是我们中州养老的部署图,发现,数据是来自数据库,数据库中的数据是一条条的,类似一个个对象,因此返回也是JSON格式 image

接下来,做一个案例,来体验SpringBoot项目的简便特性!!

代码操作

相关信息

  1. 创建User类,定义变量
  2. 根据HelloController的样子,创建UserController,将参数和返回值进行修改
  3. 运行测试,访问

创建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;
}

2. SpringBoot获得参数和数据响应 ✏️🍐

SpringBoot获得参数和数据响应

本节,我们主要讲解,如何接收页面传递过来的请求数据

  • 接收普通类型参数传递
  • 接收json数据参数
  • 接收路径参数

响应

  • 返回一般Json数据

请求参数获取实操

代码操作

简单参数 :在向服务器发起请求时,向服务器传递的是一些普通的请求数据。

参数格式:http://localhost:8848/users/simpleParam?name=韩立&age=188

路径上的参数名字和方法的形参必须一模一样,类型也要一致

操作步骤流程: 👇👇

image
image

响应数据实操

SpringBoot工程,Controller中的方法返回值对象,自动转成了Json字符串

image
image

总结

课堂作业

  1. 根据上述提示,完成路径参数和普通参数的传值,可以参考上述的代码🎤

3. Spring核心概念 🍐 🍐

Spring核心概念

之前我们在编写代码时,需要什么对象,就直接new一个就可以了。 这种做法呢,层与层之间代码就耦合了,费时间且不方便,最好是拿来就用!! 有点像 饭来张口衣来伸手!那么得这么做:

1). 不能使用new对象

2). 应用程序中用到这个对象,就直接从容器中获取,不需要创建

我们想要实现上述解耦操作,就涉及到Spring中的两个核心概念:

  • 控制反转: Inversion Of Control,简称IOC

对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。 对象的创建权由程序员主动创建转移到容器(由容器创建、管理对象)。这个容器称为:IOC容器或Spring容器

  • 依赖注入: Dependency Injection,简称DI

容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。

程序运行时需要某个资源,此时容器就为其提供这个资源。

IOC容器中创建、管理的对象,称之为:bean对象

image
image

总结

课堂作业

  1. 截图下图,说说什么IOC,以及IOC有什么好处?🎤
看看这张图,联想一下这样的好处
看看这张图,联想一下这样的好处