Spring Boot 简介



  • Spring Boot 简介

    Spring Boot是用于创建微服务的基于Java的开源框架。它是由Pivotal Team开发的,用于构建独立的和生产就绪的Spring应用程序。本章将向您介绍Spring Boot,并使您熟悉其基本概念。
  • 什么是微服务?

    微服务是允许开发人员独立开发和部署服务的体系结构。每个运行的服务都有其自己的流程,这实现了支持业务应用程序的轻量级模型。
    优点:微服务为其开发人员提供以下优势-
    • 易于部署
    • 简单的可扩展性
    • 与容器兼容
    • 最低配置
    • 缩短开发时间
  • 什么是Spring Boot?

    Spring Boot为Java开发人员提供了一个很好的平台,使其可以开发一个可以运行的独立的生产级Spring应用程序。您可以开始使用最低配置,而无需整个Spring配置设置。
    优点 - Spring Boot为其开发人员提供以下优势
    • 易于理解和开发Spring应用
    • 提高生产力
    • 减少开发时间
    目标 Spring Boot的设计目标如下:
    • 为了避免在Spring中进行复杂的XML配置
    • 以更简单的方式开发可用于生产的Spring应用程序
    • 减少开发时间并独立运行应用程序
    • 提供一种更简单的应用程序入门方法
  • 为什么选择Spring Boot?

    您可以选择Spring Boot,因为它具有此处提供的功能和优点-
    • 它提供了一种灵活的方法来配置Java Bean,XML配置和数据库事务。
    • 它提供了强大的批处理功能并管理REST端点。
    • 在Spring Boot中,一切都是自动配置的。无需手动配置。
    • 它提供基于注解的spring应用程序
    • 简化依赖管理
    • 它包括嵌入式Servlet容器
  • 它是如何工作的?

    Spring Boot通过使用@EnableAutoConfiguration注解,根据添加到项目中的依赖项自动配置应用程序。例如,如果MySQL数据库位于类路径上,但尚未配置任何数据库连接,则Spring Boot会自动配置内存数据库。Spring Boot应用程序的入口点是包含@EnableAutoConfiguration注解和main方法的类。Spring Boot使用@ComponentScan注释自动扫描项目中包含的所有组件。
  • Spring Boot 启动器

    对于大型项目,处理依赖关系管理是一项艰巨的任务。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 Security。其代码如下所示-
    
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
    
    Spring Boot Starter Web dependency用于编写Rest Endpoints。其代码如下所示-
    
    <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用于创建Web应用程序。其代码如下所示-
    
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    
    
  • 自动配置

    Spring Boot Auto Configuration根据您在项目中添加的JAR依赖项自动配置Spring应用程序。例如,如果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 Application的入口点是包含@SpringBootApplication注解的类。此类应具有运行Spring Boot应用程序的main方法。@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);
       }
    }