SpringBoot2入门教程

第一季:SpringBoot2核心技术-基础入门

学习要求

● 熟悉Spring基础
● 熟悉Maven使用

环境要求

● Java8及以上
● Maven 3.3及以上:
SpringBoot 2 的环境要求

01、Spring与SpringBoot

1、Spring能做什么

1.1、Spring的能力

Spring具有哪些能力呢?这点在Spring的官网上有比较详情的描述,我们可以在Spring的项目 里看到Spring的生态涵盖了web开发、数据访问、安全控制、分布式、消息服务、移动开发、批处理等等
Spring的能力

1.2、Spring5重大升级

1.2.1、响应式编程的支持

在这里插入图片描述

1.2.2、内部源码设计

基于Java8的一些新特性,如:接口默认实现。重新设计源码架构。

2、为什么用SpringBoot

通过上面的介绍我们发现Spring的生态很强大,那么为什么要还有SpringBoot的呢?了解过使用SpringMVC进行构建web应用的同学应该清楚,我们在创建web应用时我们要创建 前端控制器(DispatcherServlet)、请求处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)表单对象、(Form Object 提供给表单展示和提交到的对象就叫表单对象)这一大堆的文件代码,除此之外还有相应的配置,如果使用了MyBatis等数据库访问层的相关包还要写相关的配置文件等等,想想都头大,Spring为了让大家能够比较简单的使用Spring的生态,让大家的时间花在编写业务逻辑上还不是在项目的配置上就创建了SpringBoot的项目。
SpringBoot的重要程度在Spring的官网上就有所体现,在官网的中间部分如下:
在这里插入图片描述
SpringBoot主要起到了粘合剂的作用,它把我们在创建项目时使用的包和配置文件进行了整合,使得我们可以很方便的去创建项目,让我们更多的时间放在业务逻辑的编写上而不是在项目的创建上。

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
能快速创建出生产级别的Spring应用

2.1、SpringBoot优点

SpringBoot的优点我可以在 https://spring.io/projects/spring-boot 这里看到,下面我把优点复制过来了如下:
● Create stand-alone Spring applications
○ 创建独立Spring应用
● Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
○ 内嵌web服务器
● Provide opinionated ‘starter’ dependencies to simplify your build configuration
○ 自动starter依赖,简化构建配置
● Automatically configure Spring and 3rd party libraries whenever possible
○ 自动配置Spring以及第三方功能
● Provide production-ready features such as metrics, health checks, and externalized configuration
○ 提供生产级别的监控、健康检查及外部化配置
● Absolutely no code generation and no requirement for XML configuration
○ 无代码生成、无需编写XML

SpringBoot是整合Spring技术栈的一站式框架
SpringBoot是简化Spring技术栈的快速开发脚手架

2.2、SpringBoot缺点

SpringBoot有优点当然也有一些不好的点
● 人称版本帝,迭代快,需要时刻关注变化(这个可以算作优点,说明社区比较活跃)
● 封装太深,内部原理复杂,不容易精通

3、时代背景

3.1、微服务

James Lewis and Martin Fowler (2014) 提出微服务完整概念。https://martinfowler.com/microservices/
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies-James Lewis and Martin Fowler (2014)
● 微服务是一种架构风格
● 一个应用拆分为一组小型服务
● 每个服务运行在自己的进程内,也就是可独立部署和升级
● 服务之间使用轻量级HTTP交互
● 服务围绕业务功能拆分
● 可以由全自动部署机制独立部署
● 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

3.2、分布式

在这里插入图片描述

分布式的困难

● 远程调用
● 服务发现
● 负载均衡
● 服务容错
● 配置管理
● 服务监控
● 链路追踪
● 日志管理
● 任务调度
● …

分布式的解决

SpringBoot + SpringCloud(用于微服务的框架)
在这里插入图片描述

3.3、云原生

原生应用如何上云。 Cloud Native

上云的困难

● 服务自愈
● 弹性伸缩
● 服务隔离
● 自动化部署
● 灰度发布
● 流量治理
● …

4、如何学习

推荐大家以官网为准 SpringBootSpringBoot文档每一个版本都有对应的文档
在这里插入图片描述

官网文档架构

最新版本的文档
在这里插入图片描述在这里插入图片描述

如果我们不想看当前版本的所有特性我只想查看当前版本与上一个版本不同的新特性可以访问这里;
https://github.com/spring-projects/spring-boot/wiki#release-notes
在这里插入图片描述

02、SpringBoot2入门

1、系统要求

● Java 8 & 兼容java14 .
● Maven 3.3+
● IntelliJ IDEA 2022.1

1.1、maven设置

首先设置一下我们的maven,如果已经修改过了就不用在修改了

 <!-- 指定使用阿里的源 -->
<mirrors>
      <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
  </mirrors>
 
 <!-- 设置编译项目指定使用jdk8 -->
  <profiles>
         <profile>
              <id>jdk-1.8</id>
              <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
              </activation>
              <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
              </properties>
         </profile>
  </profiles>

2、HelloWorld

下面我们就来创建第一个SpringBoot的项目-HelloWorld
需求:浏览发送/hello请求,响应 Hello,Spring Boot 2

2.1、创建maven工程

在这里插入图片描述

2.2、引入依赖

首先找到最新版本的SpringBoot文档,然后在其中找到 Getting Started点击进入,然后找到Developing Your First Spring Boot Application并且点击进入在这里我们可以看到一些注意事项,然后找到Creating the POM
在这里插入图片描述
在这里我们只需要拷贝一下内容

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.7</version>
</parent>

将其拷贝到我们上面刚刚创建的项目的pom文件中,显然我们要创建一个web的项目,所以还需要引入springMVC的一些依赖,这里我们创建的是SpringBoot的项目所以引入依赖的方式也比较特别,我们点击这里Adding Classpath Dependencies找到pom配置如下

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

我们将这个依赖拷贝到我们自己的项目pom文件里,粘贴后的pom文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.atguigu</groupId>
    <artifactId>boot-01-helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>
	<dependencies>
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

2.3、创建主程序

下面创建我们的主程序 MainApplication.java,创建时注意包路径。

package com.atguigu.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
/**
 * @author miaozi
 * @date 2022/5/5
 * @SpringBootApplication 这个注解表示这是一个SpringBoot应用
 * 这个类就是主程序类
 */
@SpringBootApplication()
public class MainApplication {
    public static void main(String[] args) {
    	SpringApplication.run(MainApplication.class, args);
    }
}

2.4、编写业务

下面来创建我能的业务处理类HelloController.java

package com.atguigu.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author miaozi
 * @date 2022/5/5
 */
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String handle01() {
        return "Hello SpringBoot 2! 你好";
    }
}

2.5、测试

下面我们就来运行我们的主程序,然后在浏览器中输入http://127.0.0.1:8080/hello 即可
在这里插入图片描述

2.6、简化配置

细心的同学会发现到这里我们没有编写任何的配置文件,这是因为配置信息都已经被SpringBoot封装好了,如果我们想修改一下配置怎么办呢,我们可以在项目的resource文件下创建一个application.properties文件,然后呢?项目的默认端口是8080如果我们想修改一下这个端口配置怎么办呢?我们可以这样写如下

server.port=8088

为什么这样写就能生效呢,是因为这是SpringBoot的约定的,我们再次打开SpringBoot的文档
在这里插入图片描述
点击Application Properties就能看到所有约定的配置信息啦。

2.7、简化部署

还有一些细心的同学会发现我们没有配置web容器,那项目是怎么运行的呢,原因是SpringBoot项目中内嵌了一个tomcta,所以我们不用在去配置web容器了。我们知道一般的web项目都是打成war包,那能不能打成jar包呢?答案是肯定的我们只要引入一个maven插件即可,我们可以在Getting Started文档的4.5. Creating an Executable Jar中找到添加插件的方法
在这里插入图片描述
将这个配置拷贝到我们项目的pom文件中,并且配置项目达成jar包,最中的pom文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.atguigu</groupId>
    <artifactId>boot-01-helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

把项目打成jar包,直接在目标服务器执行即可。例如我们的项目生成的jar包为boot-01-helloworld-1.0-SNAPSHOT.jar,我们使用如下命令即可运行jar包啦。

java -jar boot-01-helloworld-1.0-SNAPSHOT.jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值