认识Springboot
Springboot简介
Spring Boot是一个用于开发Java应用程序的开源框架。它简化了Spring应用程序的配置和部署过程,使开发人员能够更专注于业务逻辑的实现。与Spring相比,Springboot减少了繁琐的配置,更加方便企业快速搭建自己的项目。
核心特性
Spring Boot提供了自动配置、快速启动和开箱即用的特性:
-
自动配置(Auto-Configuration)
-
起步依赖(Starter Dependencies)
-
内嵌容器(Embedded Container)
-
管理和监控(Actuator)
-
外部化配置(Externalized Configuration)
-
Spring Boot CLI:Spring Boot CLI是一个命令行工具,可以用于快速原型开发和运行Spring Boot应用程序。它支持Groovy脚本语言,可以通过简洁的语法进行快速开发和测试,同时还提供了许多有用的命令和特性,如自动重启、自动安装依赖等。
以上是Spring Boot的一些核心特性,它们共同为开发者提供了简化和加速开发的能力,并使得应用程序的配置和部署变得更加简单和灵活。
自动配置-核心
条件化配置 + Bean的自动扫描 = 自动化配置。Spring Boot通过条件化配置和约定大于配置的原则,自动配置应用程序的各种组件和功能。它根据应用程序的类路径和依赖项自动配置Spring框架和第三方库,大大简化了应用程序的配置过程。当然这个过程涉及到很多的配置类,注解及扫描组件,不是简单一两句话讲清楚原理的。这里只需要明白几个点:springboot官方或第三方跟你约定好:系统以默认配置启动,官方以条件式注解的判断结果决定是否配置某个Bean到spring容器。
起步依赖-核心
Starter Dependies 通俗点讲就是Springboot的一个依赖描述符,每个starter里面会有相关的一套依赖以及对应的初始化配置项,其实就是按照某一种功能将多个坐标打包在一个 starter 里面,除了springboot官方的starter之外,我们也可以自定义starter,不过命名方面需要与官方区分:
官方命名为 spring-boot-starter-xxx
,第三方命名为 xxx-spring-boot-starter
,防止你自定义的 starter 与官方名字一样造成混淆。
如何自定义一个starter,网上一搜一大堆,后续我也会单独开一章给出详细的指导。另外就是springboot是如何将多个依赖打包到一个里面,到底里面用到了什么技术呢,这个也会在单独章节介绍。
几个常用的起步依赖
- spring-boot-starter-web:基于Spring MVC实现的Web应用程序开发所需的核心依赖。
- spring-boot-starter-data-jpa:包含了Spring Data JPA所需的核心依赖,可以快速地集成JPA到Spring Boot项目中。
- spring-boot-starter-security:包含了Spring Security所需的核心依赖,可以快速地添加安全认证和授权到Spring Boot项目中。
- spring-boot-starter-test:包含了JUnit、Mockito、Hamcrest等测试框架所需的核心依赖,可以快速地编写和执行单元测试和集成测试。
- spring-boot-starter-actuator:包含了Spring Boot Actuator所需的核心依赖,可以快速地提供各种有用的系统监控和管理功能,例如健康检查、性能指标收集和暴露、应用程序信息暴露等。
内嵌容器-默认
以往你可能还需要自己搭建一个 tomcat或jetty 的web容器,而Springboot利用自身优势将容器都给你集成到 web-starter 中了,使得应用程序可以以独立的方式运行。只需要你引入官方的 spring-boot-starter-web
依赖即可,你也可以将其过滤后然后使用外部的web容器。
管理和监控-可选
Spring Boot Actuator提供了对应用程序的监控、管理和运维功能。它包括一组用于监控应用程序健康状况、获取度量指标、查看配置信息等的端点(endpoints),并提供了RESTful API和JMX接口供外部系统访问。通过Actuator,可以方便地了解应用程序的运行状态和性能指标。你只需要引入官方的 spring-boot-starter-actuator
依赖即可
配置-核心
配置文件
配置文件在应用程序中用于存储各种配置信息,例如数据库连接、日志级别、端口号等。Spring Boot提供了多种方式来使用配置文件。
- 属性文件:Spring Boot支持使用
.properties
和.yml
两种格式的属性文件作为配置文件。你可以在这些文件中定义键值对形式的配置属性。例如,application.properties
文件可以包含以下内容:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
-
配置文件位置:Spring Boot会自动加载默认的配置文件,如
application.properties
或application.yml
。你可以将这些文件放置在classpath(类路径)下的config
目录中,或者在启动应用程序时通过命令行参数--spring.config.name
和--spring.config.location
来指定配置文件的名称和位置。 -
多环境配置:你可以根据不同的环境使用不同的配置文件来配置应用程序。例如,可以创建
application-dev.properties
和application-prod.properties
等不同环境的配置文件,然后在启动应用程序时通过--spring.profiles.active
命令行参数来指定使用的环境。Spring Boot会自动加载对应环境的配置文件。 -
外部化配置:除了属性文件,Spring Boot还支持其他方式的外部化配置,如环境变量、命令行参数和配置中心。你可以通过这些方式在不同的部署环境中配置应用程序。
使用配置文件,你可以将应用程序的配置信息与代码解耦,使得配置可以在不同环境中灵活变化。Spring Boot会自动加载配置文件并将配置属性注入到应用程序中,你可以通过@Value
注解或@ConfigurationProperties
注解来获取和使用配置属性的值。
外部化
Spring Boot支持将应用程序的配置从代码中分离出来,可以使用属性文件(如properties或YAML)或环境变量来配置应用程序。这样可以在不重新编译和部署应用程序的情况下,修改配置信息,提高了应用程序的灵活性和可配置性。通常是会在那种部署环境比较特殊的情况下进行外部化。
流程总结
使用Spring Boot,你可以通过以下几个简单的步骤来快速启动一个应用程序:
-
引入Spring Boot依赖:在你的项目配置文件(如Maven的pom.xml或Gradle的build.gradle)中添加Spring Boot的依赖。这将引入Spring Boot框架及其相关的库和组件。
-
创建Spring Boot应用程序类:创建一个Java类,并使用
@SpringBootApplication
注解标记它。这个注解将告诉Spring Boot框架,这是一个Spring Boot应用程序的入口点。 -
编写业务逻辑:在应用程序类中编写你的业务逻辑代码。你可以使用Spring Boot提供的各种特性和组件,如Spring MVC用于构建Web应用程序,Spring Data用于数据库访问,等等。
-
运行应用程序:使用命令行工具或集成开发环境(IDE)来运行应用程序类。Spring Boot会自动检测你的应用程序并启动内嵌的Servlet容器(如Tomcat或Jetty),你的应用程序将在其中运行。