springboot框架价值,可以简单快速的构建独立的spring生产级别应用。springboot主要有以下的特性:
下面就以spring boot启动的时候,是如何实现mybatis 自动装配。
- <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
list = userXmlMapper.findAll(); - System.out.println(list);
- }
-
- }
-
- //Dao 操作
- @Mapper
- public interface UserXmlMapper {
-
- public List
findAll(); - }
-
-
-
上面的代码,大家都是很熟悉的,springboot是如何实现 @Mapper的注解,就可以操作数据库呢(就是中间有个桥梁,如何将springboot和mybatis连接起来的,而这个桥梁是如何实现的呢)
通过源码可以知晓
桥梁 = @SpringBootApplication=>@EnableAutoConfiguration=>@Import({AutoConfigurationImportSelector.class})
分析源码可知AutoConfigurationImportSelector的主要作用
回想再使用mybatis的时候,是需要引入mybatis的starter依赖包的,再结合AutoConfigurationImportSelector的第二点功能,可以到对应的jar下找到mybatis的AutoConfguration。
也就是说spring-boot启动【会创建个spring容器】的时候,会去执行 MybatisAutoConfiguration的逻辑【处理 @Mapper 的类(扫描出来注入到srping 容器)和数据库连接等功能】。
关于MybatisAutoConfiguration的具体功能的逻辑,这块是设计到spring 源码的了。有兴趣的可以自行查找。