SpringBoot基本介绍

575 阅读7分钟

官网地址:spring.io/projects/sp…

文档下载地址:  docs.spring.io/spring-boot…

image.png

Spring boot是目前java微服务广泛使用的Web框架,本身内部的核心模块是嵌入的tomcat和spring mvc。而SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Pivotal 公司:致力于“改变世界构造软件的方式(We are transforming how the world builds software)”,提供云原生应用开发 PaaS 平台及服务,帮助企业客户采用敏捷软件开发方法论,从而提高软件开发人员工作效率、减少运维成本,实现数字化转型、IT 创新,并最终实现业务创新。

 

1、SpringBoot解决了什么问题

1.1 Spring存在的问题

多年以来,Spring 平台饱受非议的一点就是大量的 XML 配置以及复杂的依赖管理。

随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring 的边界不断进行扩充,到了后来 Spring 几乎可以做任何事情,市面上主流的开源软件、中间件都有 Spring 对应组件支持,人们在享用 Spring 的便利之后,也遇到了一些问题。

Spring 每集成一个开源软件,就需要增加一些基础配置,随着开发项目的逐渐庞大,往往需要集成很多开源软件。后期使用 Spring 开发大型项目需要引入很多配置文件,导致配置工作难以理解且出错率高,到了后来人们甚至称 Spring 为配置地狱。

在以往我们采用SpringMVC + Spring + MyBatis框架进行开发的时候,搭建和整合三大框架,我们需要做很多工作,比如配置web.xml,配置Spring,配置MyBatis,并将它们整合在一起等。

1.2 SpringBoot出现

为了解决tomcat和spring mvc中非常繁琐的各种配置问题。基于这样一个历史背景,Spring Boot提供了一整套解决方案,对此开发过程进行了革命性的颠覆,完全抛弃了繁琐的xml配置过程,采用大量的默认配置简化我们的开发过程。

Spring Boot利用spring 4对条件化配置的支持,spring boot实现了合理推测应用所需的bean并自动化配置的机制。SpringBoot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说SpringBoot能简化我们之前采用SpringMVC + Spring + MyBatis框架进行开发的过程。

所以采用SpringBoot可以非常容易和快速地创建基于Spring框架的应用程序,它让编码变简单了,配置变简单了,部署变简单了,监控变简单了。正因为 SpringBoot 它化繁为简,让开发变得极其简单和快速,所以在业界备受关注。

2、SpringBoot的特点

1)  能够快速创建基于Spring的应用程序。

  1. 使用嵌入式的Servlet容器(例Tomcat、Jetty等),应用无需打成WAR包.

  2. 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单。

  3. 自动化配置,根据项目的Maven依赖配置,Springboot自动配置Spring、Spring mvc等。

  4. 提供了程序的健康检查等功能。

  5. 无代码生成和xml配置,采用注解配置。

3、SpringBoot四大核心

image.png

3.1 自动配置(零配置运行)

针对很多Spring应用程序和常见的应用功能,SpringBoot能自动提供相关配置。

SpringBoot启动的时候加载主配置类,需要开启自动配置功能  @EnableAutoConfiguration

 

3.2 起步依赖(场景启动器)

告诉SpringBoot需要什么功能,它就能引入需要的依赖库。

    org.springframework.boot     spring-boot-starter-web

这个依赖就是起步依赖,其管理着其他依赖,如 : tomcat、spring-webmvc等。

 

3.3 Actuator(指标监控)

让你能够深入运行中的SpringBoot应用程序,一探SpringBoot程序的内部信息。使用Actuator可以在SpringBoot程序运行时通过http请求的方式动态的监控和管理程序。

依赖如下:

            org.springframework.boot         spring-boot-starter-actuator      

 

3.4 命令行界面(命令行)

这是SpringBoot的可选特性,主要针对Groovy语言使用。

@Component
public class XInTuCommand implements CommandLineRunner {

	// 获取到注入的 XinTu 对象
    @Resource
    private XinTu xintu;

    // 重写CommandLineRunner类的run方法
    @Override
    public void run(String... args) throws Exception {
    	// 将XinTu对象打印	
        System.out.println(xintu.toString());
    }
}

Groovy是一种基于JVM(Java虚拟机) 的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与Java代码很好地结合,也能用于扩展现有代码,由于其运行在JVM上的特性,Groovy可以使用其他Java语言编写的库。

4、SpringBoot版本

Springboot目前分为两大版本系列,2.x系列和3.系列

开发工具推荐Eclipse 或 IDEA。 但是目前社区版本由于权限问题,不自带SpringBoot插件,需要自行安装。

构建工具推荐使用Maven 3.0+,Maven目前最新版本为3.9.1(2023.4)

推荐使用Java 8,SpringBoot 2.x系或3.x 均可。

 

5、SpringBoot重要策略

  SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。

5.1 开箱即用

Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。

我们在maven里经常会写诸如 spring-boot-starter-xxx 的依赖,由于只要引入了这样的依赖,其相应的版本无需多余指定,也无需写多余的扫描和加载注解,即可立即使用,称为开箱即用。

 

5.2 约定优于配置

Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

约定优于配置:

1)约定编程是一种软件设计规范,本质上是对系统、类库或框架中一些东西假定一个大众化合理的默认值(缺省值)。

2) 在模型中存在一个名为User的类,那么对应到数据库会存在一个名为user的表,只有在偏离这个约定时才需要做相关的配置(例如你想将表名命名为t_user等 非user时才需要写关于这个名字的配置)

3)简单来说就是假如你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时,才需要对约定进行替换配置

4)约定优于配置理念

约定其实就是一种规范,遵循了规范,那么就存在通用性,那么事情就会变得相对简单,程序员之间的通成本会降低,工作效率会提升,合作也会变得更加简单

5)避免理解成约定的优先级高于配置,其实配置的优先级是高于约定的,只是缺省时按照约定配置。

那么默认就是扫描当前启动类所在的包以及启动类的子包。

多个 application 配置文件加载顺序,yml > yaml > properties

读取配置方式方式:

方式一: 使用@value注解读取, 这种方式弊端:只能读取简单类型的数据,没法读取自定义类型数据

方式二: 可以使用@ConfigurationProperties注解去读取,使用这种方式前提:

以上!