阅读 187

Spring Boot 教程: 简介

【注】本文译自:https://www.tutorialspoint.com/spring_boot/spring_boot_introduction.htm

Spring Boot是一个基于Java的开源框架,可用于创建微服务。 它由Pivotal团队开发,用来构建可在生产环境独立运行的spring应用。 Spring Boot 包含了全面的支持微服务开发的基础设施,并且能够开发可“即时运行”的企业级应用。

受众

本教程为Java开发者而设计,帮助他们理解如何以最小化配置开发可用于生产的spring应用。本教程揭示了 Spring Boot 的主要特性,譬如:启动者、自动配置、Bean和 Actuator等。通过本教程,你可以获得中等水平的 Spring Boot技能。

先决条件

学习本教程需要事先有一定的Java、Spring、Maven和Gradle的经验。如果你有这些概念,就可以轻松理解Spring Boot的相关概念。要是你拥有RESTful Web 服务的编写经验,那会更有优势。如果你是一位初学者,建议你在开始学习Spring Boot之前要先对这些方面的知识有所了解。

Spring Boot --- 简介

本文将带你熟悉Spring Boot及其基本概念。

什么是微服务?

微服务是一个体系结构,允许开发者独立开发和部署服务。每个服务都有其独立的运行进程,并且以轻量机制通信支持业务应用。

优势

对于开发者而言,微服务有以下优势:
  • 易于部署
  • 便于扩展
  • 与容器兼容
  • 最小化配置
  • 缩短生产时间

什么是Spring Boot?

Spring Boot为Java开发者提供了一个优秀的平台,可用于开发独立运行的生产级spring应用,并且能够即时运行(just run)。你毋须熟悉整个spring配置,只需以最小化的配置进行开发。

优势

Spring Boot为开发者提供了以下优势:
  • 易于理解和开发spring应用
  • 提高生产效率
  • 减少开发时间

目标

Spring Boot的设计目标如下:
  • 避免spring复杂的XML配置
  • 以便捷的方式开发生产级的Spring应用
  • 减少开发和独立运行的时间
  • 提供启动应用的便捷方式

为什么要用Spring Boot?

之所以要选择Spring Boot,是因为它能够提供以下特性和利益:
  • 提供了灵活的方式来配置Java Beans、XML配置和数据库事务
  • 提供了强大的批处理、管理REST端点
  • 在Spring Boot中,一切皆为自动配置,毋须手工配置
  • 提供了基于注解的spring应用
  • 便捷的依赖管理
  • 引入了嵌入式Servlet容器

工作原理

Spring Boot 使用@EnableAutoConfiguration注解可自动配置应用。
Spring boot 应用的入口点是包含@SpringBootApplication 的类和其main方法。
Spring Boot 使用@ComponentScan注解自动扫描项目中包含的所有组件。

Spring Boot启动器(Starters)

对于大型项目而言,依赖管理是一项艰巨的任务。Spring Boot通过为开发者提供一系列便捷的依赖来解决这个难题。比如:要想使用Spring和JPA进行数据库访问,你只要在项目里引入 spring-boot-starter-data-jpa 就可以了。
要注意所有的Spring Boot启动器都有相同的命名范式spring-boot-starter- *,这里 * 指示它是某种的类型类型。

示例

看看下面解释可以对 Spring Boot 启动器有更好的理解:
Spring Boot Starter Actuator dependency 用于监控和管理你的应用。代码如下:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
复制代码
Spring Boot Starter Security dependency 用于 Spring 安全。代码如下:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
复制代码
Spring Boot Starter web dependency 用于编写Rest 端点。代码如下:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
复制代码
    Spring Boot Starter Thyme Leaf dependency 用于创建 web 应用。代码如下:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
复制代码
    Spring Boot Starter Test dependency 用于编写测试案例。代码如下:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
</dependency>
复制代码

自动配置

Spring Boot自动配置通过在项目中添加JAR依赖来自动化配置Spring应用。例如:如果你的classpath里包含 MySQL 数据库,即使没有配置任何数据库连接Spring Boot也会自动配置一个内存数据库。
出于这个目的,要在主类文件加上 @EnableAutoConfiguration 注解或者 @SpringBootApplication 注解。那么,你的 Spring Boot 应用将会被自动配置。
看下面的代码会更好理解:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

@EnableAutoConfiguration
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
复制代码

Spring Boot 应用

Spring Boot 应用的入口点是包含 @SpringBootApplication 的类。这个类应当有运行Spring Boot应用的主方法。@SpringBootApplication 注解包括自动配置、组件扫描和 Spring Boot 配置。
如果类加上@SpringBootApplication 注解,就不需要再加 @EnableAutoConfiguration、@ComponentScan 和 @SpringBootConfiguration 注解。@SpringBootApplication 注解包括所有其他注解。
看下面的代码会更好理解:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}
复制代码

组件扫描

当应用初始化时,Spring Boot 扫描所有声明的bean和包。你要在类文件加上 @ComponentScan 注解来扫描项目中的组件。
看下面的代码会更好理解:
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}
复制代码