从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

    • SpringBoot教程-尚硅谷

      • SpringBoot课程介绍
      • Spring和SpringBoot
      • HelloWorld
        • 需求
        • 配置Maven
        • 创建Maven项目
        • 添加依赖
        • 主程序
        • 编写业务逻辑
        • 运行
        • 简化配置
        • 简化部署
        • 常见错误
        • 源码
      • 了解自动配置原理
      • 底层注解-@Configuration详解
      • 底层注解-@Import导入组件
      • 底层注解-@Conditional条件装配
      • 原生配置文件引入-@ImportResource
      • 底层注解-配置绑定@ConfigurationProperties
      • 自动配置原理
      • 自动配置流程
      • Lombok简化开发
      • DevTools
      • Spring-Initailizr
      • 配置文件-Yaml用法
      • Web开发简介
      • web开发-静态资源规则于定制化
      • 静态资源配置原理
      • Rest映射及源码解析
      • 请求映射原理
      • 常用参数注解使用
      • MatrixVariable:矩阵变量
      • 各种类型参数解析原理
      • Servlet-API参数解析原理
      • Model、Map参数解析原理
      • 自定义对象参数绑定原理
      • 自定义Converter原理
      • 数据响应原理
      • 内容协商原理
      • 基于请求参数的内容原理
      • 自定义MessageConverter原理
      • Thymeleaf初体验
      • web实验-后台管理系统
      • web实验-抽取公共页面
      • web实验-遍历数据
      • 源码分析-视图解析器与视图
      • 拦截器-登录检查与静态资源放行
      • 拦截器的执行时机和原理
      • 单文件和多文件上传的使用
      • 文件上传原理
      • 错误处理机制
      • 错误处理-底层组件源码分析
      • 异常处理流程
      • 几种异常处理原理
      • Web原生对象注入
      • 嵌入式Servlet容器
      • 定制化原理
      • 数据库场景的自动配置分析和整合测试
      • 自定义方式整合Druid
      • 通过starter整合Druid
      • 整合Mybatis
      • 使用注解整合Mybatis
      • 整合MybatisPlus操作数据库
      • MybatisPlus-列表分页展示
      • 整合Redis
      • 单元测试-Junit5
      • 单元测试-断言机制
      • 单元测试-前置条件
      • 单元测试-嵌套测试
      • 单元测试-参数化测试
      • 指标监控-基本概念
      • 指标监控-配置EndPoint
      • 指标监控-可视化
      • 原理解析-Profile功能
      • 配置文件深入
      • 自定义Starter
      • SpringApplication初始化过程
      • SpringBoot完整启动过程
      • SpringBoot
  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • SpringBoot
  • SpringBoot教程-尚硅谷
2023-08-22
目录

HelloWorld

# 30.HelloWorld

介绍了这么多原理,开始动手吧!注意要检查Java和Maven的版本   ‍

‍

‍

# 需求

浏览器发送/hello请求,响应 Hello

‍

‍

# 配置Maven

为了方便,我们可以修改下Maven的配置文件:添加阿里镜像,并且配置JDK为1.8

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

<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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

‍

# 创建Maven项目

​​

‍

然后我们修改pom.xml文件,添加父工程:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>
1
2
3
4
5

​

这在文档中也能看到:

image​

‍

# 添加依赖

下一步就是添加依赖了。目前我们是要开发web的场景,只需添加如下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
1
2
3
4
5
6

就能完成SpringMVC的引入,然后就可以开发web了。

‍

‍

也可以看到有引入很多web相关的依赖:

image​

‍

‍

‍

‍

‍

‍

# 主程序

我们写一个类,用来运行我们的整改SpringBoot项目:

package com.peterjxl.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 主程序类
 * @SpringBootApplication 这是一个SpringBoot应用程序
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        // 启动SpringBoot应用程序
        SpringApplication.run(MainApplication.class, args);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

注解和main方法里的内容是固定写法,知道就行。然后我们就可以编写业务逻辑了,不像之前要写一大堆配置。

‍

# 编写业务逻辑

package com.peterjxl.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // @RestController = @Controller + @ResponseBody
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot 2!";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

这里用的都是SpringMVC里的注解,@RestController​是SpringBoot提供的注解,其等价于@Controller + @ResponseBody。我们可以看@RestController的源码,其实就是这两个注解加起来而已。

这个类主要是返回一个字符串Hello, Spring Boot 2!​ 给浏览器。

‍

‍

# 运行

接下来我们直接运行main方法即可,如果放在以前,还得整合Tomcat等。可以看到有输出日志,并且告诉我们监听了8080端口:

​​

‍

我们访问localhost:8080/hello/ (opens new window),可以看到有返回:

​​

‍

‍

# 简化配置

SpringBoot帮我们简化了配置,例如我们之前如果想要改端口号,还得修改Tomcat的配置文件;

而SpringBoot整合了Spring生态圈的很多框架,我们可以在一个配置文件里。

我们新建resources/application.properties文件,配置端口号:

server.port=9999
1

‍

然后我们重启,就可以访问9999端口了

​​

‍

至于具体能写哪些配置呢?可以在文档上看Application properties:

​​​​

‍

‍

# 简化部署

之前我们部署时,需要在服务器上安装Tomcat,然后讲应用打成war包,然后在放到Tomcat上;

而使用了SpringBoot,我们就可以将应用打成一个可执行的jar包,然后直接在服务器上运行!

We finish our example by creating a completely self-contained executable jar file that we could run in production. Executable jars (sometimes called “fat jars”) are archives containing your compiled classes along with all of the jar dependencies that your code needs to run.

‍

‍

要创建该jar包,需要使用SpringBoot提供的插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
1
2
3
4
5
6
7
8

‍

文档也有说明:

​​​

‍

我们运行下打包:

​​

‍

‍

然后在命令行里运行该jar包:

java -jar LearnSpringBoot-1.0-SNAPSHOT.jar
1

然后也能在浏览器上访问。

‍

‍

其实原理就是,该jar包含了我们所有需要用到的jar包(lib目录下),并且包含了Tomcat的依赖。我们可以用压缩软件打开jar包:

​​​​

‍

‍

‍

# 常见错误

如果遇到在命令行启动,卡住的情况:建议取消掉cmd的快速编辑模式(该模式下右键单击即可快速复制和粘贴内容)

‍

# 源码

已将本文源码上传到Gitee (opens new window)或GitHub (opens new window) 的分支demo1,读者可以通过切换分支来查看本文的示例代码

在GitHub上编辑此页 (opens new window)
上次更新: 2023/8/23 10:10:57
Spring和SpringBoot
了解自动配置原理

← Spring和SpringBoot 了解自动配置原理→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式