如何理解Spring Boot简介与配置

发布时间:2021-11-23 09:23:44 作者:柒染
来源:亿速云 阅读:152

如何理解Spring Boot简介与配置

目录

  1. 引言
  2. Spring Boot简介
  3. Spring Boot的配置
  4. Spring Boot的自动配置
  5. Spring Boot的启动流程
  6. Spring Boot的依赖管理
  7. Spring Boot的日志配置
  8. Spring Boot的测试
  9. Spring Boot的部署
  10. 总结

引言

Spring Boot 是一个用于简化 Spring 应用程序开发的框架。它通过提供默认配置和自动配置,使得开发者能够快速搭建和运行 Spring 应用程序。本文将详细介绍 Spring Boot 的基本概念、配置方式、自动配置机制、启动流程、依赖管理、日志配置、测试以及部署等方面的内容,帮助读者全面理解 Spring Boot 的使用和配置。

Spring Boot简介

2.1 什么是Spring Boot

Spring Boot 是由 Pivotal 团队开发的一个开源框架,旨在简化 Spring 应用程序的初始搭建和开发过程。它通过提供默认配置和自动配置,使得开发者能够快速搭建和运行 Spring 应用程序。Spring Boot 的核心思想是“约定优于配置”,即通过约定俗成的配置方式,减少开发者的配置工作量。

2.2 Spring Boot的优势

2.3 Spring Boot的核心功能

Spring Boot的配置

3.1 配置文件

Spring Boot 支持多种配置文件格式,包括 properties 文件和 YAML 文件。默认情况下,Spring Boot 会加载 application.propertiesapplication.yml 文件中的配置。

3.1.1 properties 文件

properties 文件是一种键值对格式的配置文件,例如:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

3.1.2 YAML 文件

YAML 文件是一种层次化的配置文件格式,例如:

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

3.2 配置属性

Spring Boot 提供了丰富的配置属性,用于配置应用程序的各个方面。配置属性通常以 spring.server. 开头,例如:

3.3 配置优先级

Spring Boot 支持多种配置方式,配置属性的优先级如下:

  1. 命令行参数
  2. JNDI 属性
  3. Java 系统属性
  4. 操作系统环境变量
  5. 配置文件(application.propertiesapplication.yml
  6. @Configuration 类中的 @PropertySource 注解
  7. 默认属性

3.4 配置类

Spring Boot 支持通过 Java 配置类来配置应用程序。配置类通常使用 @Configuration 注解标记,例如:

@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .url("jdbc:mysql://localhost:3306/mydb")
                .username("root")
                .password("secret")
                .build();
    }
}

3.5 条件化配置

Spring Boot 支持条件化配置,即根据特定条件来决定是否加载某个配置。条件化配置通常使用 @Conditional 注解标记,例如:

@Configuration
@ConditionalOnProperty(name = "spring.datasource.enabled", havingValue = "true")
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .url("jdbc:mysql://localhost:3306/mydb")
                .username("root")
                .password("secret")
                .build();
    }
}

3.6 外部化配置

Spring Boot 支持多种外部化配置方式,包括:

Spring Boot的自动配置

4.1 自动配置的原理

Spring Boot 的自动配置是通过 @EnableAutoConfiguration 注解实现的。该注解会扫描类路径上的依赖,并根据依赖自动配置应用程序。例如,如果类路径上有 spring-boot-starter-data-jpa 依赖,Spring Boot 会自动配置 JPA 相关的 Bean。

4.2 自定义自动配置

Spring Boot 允许开发者自定义自动配置。自定义自动配置通常通过 @Configuration 类和 @Conditional 注解实现,例如:

@Configuration
@ConditionalOnClass(DataSource.class)
public class DataSourceAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .url("jdbc:mysql://localhost:3306/mydb")
                .username("root")
                .password("secret")
                .build();
    }
}

4.3 禁用自动配置

Spring Boot 允许开发者禁用某些自动配置。禁用自动配置通常通过 @EnableAutoConfiguration 注解的 exclude 属性实现,例如:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

Spring Boot的启动流程

5.1 启动类

Spring Boot 应用程序的启动类通常使用 @SpringBootApplication 注解标记,例如:

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

5.2 启动流程

Spring Boot 的启动流程主要包括以下几个步骤:

  1. 加载配置:加载 application.propertiesapplication.yml 文件中的配置。
  2. 创建应用上下文:创建 Spring 应用上下文。
  3. 执行自动配置:根据类路径上的依赖执行自动配置。
  4. 启动内嵌服务器:启动内嵌的 Tomcat、Jetty 或 Undertow 服务器。
  5. 发布启动事件:发布 ApplicationStartedEvent 事件。

5.3 启动事件

Spring Boot 提供了多种启动事件,用于在应用程序启动过程中执行特定操作。启动事件通常通过实现 ApplicationListener 接口来监听,例如:

@Component
public class MyApplicationListener implements ApplicationListener<ApplicationStartedEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("Application started!");
    }
}

Spring Boot的依赖管理

6.1 依赖管理工具

Spring Boot 使用 Maven 或 Gradle 作为依赖管理工具。Maven 和 Gradle 都支持通过 pom.xmlbuild.gradle 文件来管理依赖。

6.1.1 Maven

Maven 的 pom.xml 文件通常如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>my-application</artifactId>
    <version>1.0.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

6.1.2 Gradle

Gradle 的 build.gradle 文件通常如下所示:

plugins {
    id 'org.springframework.boot' version '2.5.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '1.0.0'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

6.2 依赖管理策略

Spring Boot 提供了多种依赖管理策略,包括:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

6.3 依赖冲突解决

Spring Boot 提供了多种依赖冲突解决策略,包括:

Spring Boot的日志配置

7.1 日志框架

Spring Boot 支持多种日志框架,包括 Logback、Log4j2 和 Java Util Logging。默认情况下,Spring Boot 使用 Logback 作为日志框架。

7.2 日志配置

Spring Boot 支持通过 application.propertiesapplication.yml 文件来配置日志,例如:

logging.level.root=INFO
logging.level.com.example=DEBUG
logging.file.name=myapp.log
logging.file.path=/var/logs

7.3 日志级别

Spring Boot 支持多种日志级别,包括 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL。日志级别可以通过 logging.level 属性来配置,例如:

logging.level.root=INFO
logging.level.com.example=DEBUG

Spring Boot的测试

8.1 单元测试

Spring Boot 支持通过 JUnit 和 Mockito 进行单元测试。单元测试通常使用 @SpringBootTest 注解标记,例如:

@SpringBootTest
public class MyServiceTest {

    @Autowired
    private MyService myService;

    @Test
    public void testMyService() {
        assertEquals("Hello, World!", myService.sayHello());
    }
}

8.2 集成测试

Spring Boot 支持通过 @SpringBootTest 注解进行集成测试。集成测试通常使用 @SpringBootTest 注解标记,例如:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyControllerTest {

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void testMyController() {
        ResponseEntity<String> response = restTemplate.getForEntity("/hello", String.class);
        assertEquals(HttpStatus.OK, response.getStatusCode());
        assertEquals("Hello, World!", response.getBody());
    }
}

8.3 测试工具

Spring Boot 提供了多种测试工具,包括:

Spring Boot的部署

9.1 打包

Spring Boot 支持通过 Maven 或 Gradle 打包应用程序。打包后的应用程序通常是一个可执行的 JAR 文件,例如:

mvn clean package

9.2 部署方式

Spring Boot 支持多种部署方式,包括:

9.3 容器化部署

Spring Boot 支持通过 Docker 进行容器化部署。容器化部署通常通过 Dockerfile 实现,例如:

FROM openjdk:11-jre-slim
COPY target/my-application.jar /app/my-application.jar
ENTRYPOINT ["java", "-jar", "/app/my-application.jar"]

总结

Spring Boot 是一个强大的框架,通过提供默认配置和自动配置,使得开发者能够快速搭建和运行 Spring 应用程序。本文详细介绍了 Spring Boot 的基本概念、配置方式、自动配置机制、启动流程、依赖管理、日志配置、测试以及部署等方面的内容,希望能够帮助读者全面理解 Spring Boot 的使用和配置。

推荐阅读:
  1. spring底层原理解析
  2. Spring Boot 中如何定制 Banner

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring cloud

上一篇:在Java的反射中Class.forName和ClassLoader有哪些区别

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》