【SpringBoot】注册条件+自动配置原理+自定义starter
注册条件
注入到容器内实体类型对象的属性都是null,这些对象并没有什么实际的意义,因为实体类的对象就是来封装对象的,结果你这些对象中什么都没有;
解决方法是
1.给这些属性赋值然后再注入bean
但是这些属性又是固定的不是很好,所以写入到配置文件中
将配置文件中的内容进行注释,发现直接报错
但是想要的效果是在配置文件中没有找到对应值,就不进行注入bean,有值的情况下才进行注入
SpringBoot提供了设置注册生效调价的注解@conditional
以下是基于该注解的衍生注解
以下三个是常用的注解
@ConditionalOnProperty
这样就没有注入Country这个类
打开配置这样就注入了
@ConditionalOnMissingBean
@ConditionalOnClass
目前我环境中的web依赖是注释掉的
自动配置原理
为什么要学习自动配置原理
1.在实际开发中我们经常会定义一些公共的组件,然后提供给各个部门使用,为了使用方便我们会将公共的组件定义为starer,如果你想自定义starter,就必须先了解自定义配置原理
2.应对,面试
自动配置
遵循预定大约配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入到ioc容器
之前我们注入bean并不是自动注入配置
源码分析
举例:程序引入spring-boot-starter-web起步依赖,启动后,会自动向ioc容器中注入DispatcherServlet类
自动配置注解
总结
2.7之前的配置类是写在spring.factories中的,2.7-3.0spring.factories和imports都可以,3.0以后只支持imports
如何实现自动配置
根据以上实现思路写出以下2.0的脚本文件
引入
这个jar包可以完成自动配置
面试回答
自定义stater
场景
在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot的starter
创建自定义mybatis的starter
步骤
创建maven工程
工程1
工程2
原始mybatis的文件结构
添加依赖包
创建自动配置类
更换自己写的dmybatis-spring-boot-starter依赖,运行