📅  最后修改于: 2023-12-03 15:35:03.103000             🧑  作者: Mango
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 自动配置的实战应用。
在 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>
在 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
创建实体类 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();
}
编写一个测试方法,测试自动配置是否生效。
@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 时,要注意它的实现原理,以及对应的配置项。