📜  Spring Boot – 自动配置(1)

📅  最后修改于: 2023-12-03 15:35:03.103000             🧑  作者: Mango

Spring Boot – 自动配置

简介

Spring Boot 是一个快速构建 Spring 应用程序的框架,它通过扫描 classpath 并根据需要配置 Spring Bean 来实现自动配置。这使得开发人员可以更快速地搭建应用程序并跳过部分繁琐的配置。

Spring Boot 的自动配置机制基于条件注解(Conditional Annotation),如果该注解所在的类满足某些条件,那么它就会被 Spring Boot 自动配置建立为一个 Bean,简单且高效。

自动配置原理

Spring Boot 的自动配置机制依赖于 spring-boot-autoconfigure 模块,该模块中包含了一系列的 @Conditional 注解,以及对应的配置类,它们会在启动时自动扫描加载到 Spring 容器中。

Spring Boot 根据在 classpath 中检测到的类、jar 包,以及现有的 Bean 类等信息,来决定需要自动配置哪些 Bean 。当存在匹配的 Bean 时,它们将被应用,否则默认配置项将被设置。

自动配置实战

以 Spring Boot + MyBatis + MySQL 为例,展示 Spring Boot 自动配置的实战应用。

1. 添加相关依赖

pom.xml 文件中添加以下依赖:

<dependencies>
    <!-- Spring Boot web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>

    <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>
2. 添加配置文件

application.properties 文件中添加相关配置:

# datasource configuration
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

# Mybatis configuration
mybatis.type-aliases-package=com.example.demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml
3. 编写实体类及 Mapper

创建实体类 User,以及对应的 Mapper 接口 UserMapper

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
}

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user")
    List<User> findAll();
}
4. 运行测试方法

编写一个测试方法,测试自动配置是否生效。

@SpringBootTest
class DemoApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    void contextLoads() {
        List<User> userList = userMapper.findAll();
        Assert.assertEquals(3, userList.size());
    }
}

以上步骤,就完成了 Spring Boot 自动配置的实战体验。

总结

Spring Boot 自动配置的机制,极大简化了应用程序的开发流程,减少了一部分手工配置,从而降低了开发成本,提高了开发效率。预配置的 Spring Boot Starter 是一个非常棒的工具,它帮助开发者可以轻松地将自己的应用程序部署到云端。

同时,需要注意的是,在使用自动配置时,要正确理解自动配置的工作方式,在选择合适的 Starter 时,要注意它的实现原理,以及对应的配置项。