如何寻找Springboot自动装配的实现

本文介绍Spring Boot框架如何简化MyBatis集成过程。通过分析启动类与依赖配置,揭示了Spring Boot如何自动装配MyBatis并进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

序言:

springboot框架价值,可以简单快速的构建独立的spring生产级别应用。springboot主要有以下的特性:

  • 1 创建独立的Spring应用
  • 2 直接嵌入Tomcat 等Web容器(不需要部署WAR文件)
  • 3 提供固化的“starter”依赖,简化构建配置
  • 4 当条码满足时自动装配Spring 货第三方类库
  • 5 提供运维的特性,如指标信息,健康检查和外部配置
  • 6 不需要XML配置。

下面就以spring boot启动的时候,是如何实现mybatis 自动装配。

1 从程序的使用去入手分析

  •   引入mybatis的starter依赖和相关的数据库驱动
      <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
      </dependency>
  • 程序使用
//程序的启动类
@SpringBootApplication
public class HelloApplication {
	
	public static void main(String[] args) { 
		SpringApplication.run(HelloApplication.class, args);
	}

//服务类
@Service
public interface UserService {
 
    @Autowired
    private UserXmlMapper userXmlMapper;
    @Test
    public void testFindAll2() {
        List<User> list = userXmlMapper.findAll();
        System.out.println(list);
    }

}

//Dao 操作
@Mapper
public interface UserXmlMapper {
 
    public List<User> findAll();
}



上面的代码,大家都是很熟悉的,springboot是如何实现 @Mapper的注解,就可以操作数据库呢(就是中间有个桥梁,如何将springboot和mybatis连接起来的,而这个桥梁是如何实现的呢)

  •  从启动类 寻找桥梁

 通过源码可以知晓 

桥梁 = @SpringBootApplication=>@EnableAutoConfiguration=>@Import({AutoConfigurationImportSelector.class})

分析源码可知AutoConfigurationImportSelector的主要作用 

  • 扫描classpath下所有的jar包
  • 在META-INF/spring.factories配置好的AutoConfiguration
  • 扫描出来需要执行的AutoConfguration

回想再使用mybatis的时候,是需要引入mybatis的starter依赖包的,再结合AutoConfigurationImportSelector的第二点功能,可以到对应的jar下找到mybatis的AutoConfguration。

 也就是说spring-boot启动【会创建个spring容器】的时候,会去执行 MybatisAutoConfiguration的逻辑【处理 @Mapper 的类(扫描出来注入到srping 容器)和数据库连接等功能】。

关于MybatisAutoConfiguration的具体功能的逻辑,这块是设计到spring 源码的了。有兴趣的可以自行查找。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值