springboot 入门


前言

  • 为了简化 Spring 应用的创建、运行、调试、部署等
  • Spring Boot 提供了一堆依赖打包(starter:将某个场景下面的所有依赖打包成一个依赖),大部分依赖的版本冲突问题得到解决
  • 默认使用 tomcat 作为服务器(内嵌 tomcat,无需额外配置),使用 logback 提供日志记录
  • 致力于简洁开发,让开发者写更少的配置,让程序能更快的运行和启动
  • Spring Cloud 的基础

一、特点

① 为基于 Spring 的开发提供更快的入门体验

② 开箱即用,没有代码生成,也无需 xml 配置。也可以通过修改默认值来满足特定需求

③ 提供一些常见的非功能性特性:如内嵌 tomcat 服务器,安全、外部配置…

④ 不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式

二、核心功能

起步依赖(简化依赖配置)

本质是一个 maven 项目对象模型

具备某种功能的依赖打包到一起,提供一些默认功能

如 web 项目需要导入 spring context、spring-webmvc…等众多依赖,而 Spring Boot 已经将这些打包成一个坐标依赖,只需要导入这个依赖,便可以导入所需的众多依赖。

自动装配(简化工程常用配置)

spring boot 提供了很多配置类,在应用程序启动时,主要根据加载的依赖,来决定要用哪些配置类

辅助功能

内置 Tomcat 服务器
支持 yml 格式配置文件

内置 Tomcat

在 spring-boot-starter-web 起步器(starter)中,内置了 spring-boot-starter-tomcat 起步器

而在 spring-boot-starter-tomcat 中,配置了一个 tomcat-embed-core 坐标,这个坐标叫做 tomcat 内嵌核心 ,作用是将 tomcat 引入到程序中

运行原理:
  tomcat 底层是 java 语言开发,而java 程序运行靠的是对象,所以 tomcat 运行起来也靠对象,即 tomcat 服务器是以对象的形式在 spring 容器中运行

二、POM 文件

Spring Boot 的父模块

一个 Spring Boot 项目的 pom 文件会继承于 Spring Boot 的父模块 spring-boot-starter-parent

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.12.RELEASE</version>
  <relativePath/> <!-- 从本地仓库查找 -->
</parent>

spring-boot-starter-parent 又继承于 spring-boot-dependencies 模块
在这里插入图片描述
依赖的版本控制spring-boot-dependencies 模块中

Maven 多模块开发

问题
  如果使用多模块开发,那么我们自己有一个自己的父模块,此时如果还继承 spring boot 的父模块,便无法继承自己的父模块
解决

首先需要弄清一点,在单模块开发时,我们的 Spring boot 项目最终是需要找到 spring-boot-dependencies 模块,获取里面的依赖版本

以导入的方式,导入 spring-boot-dependencies 模块

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.3.12.RELEASE</version>
      <!-- 打包方式 -->
      <type>pom</type>
      <!-- 导入 -->
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

注意:
spring-boot-dependencies 打包方式是 pom,所以不能直接使用依赖标签< dependency >< /dependency >作为依赖导入

依赖 start

本质是一个 jar 包,将这个 jar 所需要的依赖传递给项目,开发者只需要写某个 start,与这个 start 的相关依赖都会传递给项目

与 parent 区别

start 是一个坐标中定了若干个坐标,即一个依赖中包含多个依赖,只需要写 start 一个依赖,其相关的多个依赖都会传递给项目,减少了依赖配置的书写量

parent 则是定义了几百个依赖的版本号,依赖的版本由 Spring Boot 统一管理,减少版本冲突

三、配置文件

Spring Boot 的配置文件主要用来配置自动配置类所需要的参数,如数据库四大参数。如果自动配置类有默认参数,那么会被配置文件中的参数替换

分类

properties

server.port=80

yml

server:
  port: 81

yaml

server:
  port: 81

yml 与 yaml 只是后缀名不同,推荐使用 yml 格式的配置文件(能少一个就少一个字母)

读取

单一

@Value(“${key}”)
在这里插入图片描述
注意:
使用@Value注解时,要将该注解写在一个注入到 Spring 容器受其管控的 bean 的属性名上方

这样当bean进行初始化时候才可以读取到对应的数据

全部

当配置文件中定义的数据量过多时,要写多个 @Value ,而 Spring Boot 提供了一个对象 Environment,配置文件中所有的数据保存在这个对象中

Environment
读取数据:environment.getProperty("key")

在这里插入图片描述

读取对象形式数据

上述方式要么太繁琐(读取单一数据),要么封装的太厉害(读取全部数据),而且对于对象数组也只能拿到一个数据,SpringBoot也提供了可以将一组yaml对象数据封装一个Java对象的操作,首先定义一个注入到 spring 容器受其管控的 bean ,然后使用@ConfigurationProperties指定该对象加载哪一组yaml中配置的信息

@ConfigurationProperties
在这里插入图片描述
注意

  • 封装类的属性需要与配置文件中的配置信息对应
  • 封装类必须注入到 spring 容器中,否则无法进行属性注入

此时 IDEA 在该封装类会有一个警告,(可以不管)
在这里插入图片描述
这是因为这个封装类是我们自定义的,SpringBoot 没有此封装类的配置元数据

解决

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值