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>
程序使用
//程序的启动类@springbootapplicationpublic class helloapplication { public static void main(string[] args) { springapplication.run(helloapplication.class, args); }//服务类@servicepublic interface userservice { @autowired private userxmlmapper userxmlmapper; @test public void testfindall2() { list<user> list = userxmlmapper.findall(); system.out.println(list); }}//dao 操作@mapperpublic 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容器)和数据库连接等功能】。
以上就是springboot框架怎么实现自动装配的详细内容。
