首页 > 文章列表 > Springboot框架怎么实现自动装配

Springboot框架怎么实现自动装配

springboot
494 2023-05-16

Springboot框架怎么实现自动装配

序言

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

1.创建独立的Spring应用

2.直接嵌入Tomcat等Web容器(不需要部署WAR文件)

3.提供固化的“starter”依赖,简化构建配置

4.当条码满足时自动装配Spring货第三方类库

5.提供运维的特性,如指标信息,健康检查和外部配置

6.不需要XML配置。

从程序的使用去入手分析

引入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容器)和数据库连接等功能】。