一. ConditionalOnClass注解ConditionalOnClass(name com.mysql.cj.jdbc.Driver)ConditionalOnClass 不仅可以标注在类上也可以标注在方法上。标注在类上时表示整个配置类只有在指定类存在时才会生效标注在方法上时表示只有满足条件时该 Bean 才会创建。在 Spring Boot 自动配置中通常将它标注在配置类上用于控制自动配置是否生效二. ConditionalOnBean和ConditionalOnMissingBean一般标注在方法上三. ConditionalOnPropertyConditionalOnProperty通过开关控制bean是否生效#禁用自动配置 application.ymlmy:starter:enabled: true/***1. ConditionalOnProperty对于的属性值和配置文件的value值一样的时候该bean才会生效2. matchIfMissing true 表示如果没有配置属性则默认生效matchIfMissing默认值和havingValue的值一样)3. ConditionalOnProperty通过开关控制bean是否生效*/BeanConditionalOnMissingBeanConditionalOnProperty(prefix my.starter,name enabled, havingValue true,matchIfMissing true)public MyService myService(MyProperties properties) {MyService myService new MyService();myService.setName(properties.getName());return myService;}四. 如何自定义一个starter自定义starter主要是实现某种功能然后都过maven上传到本地的仓库然后其它的项目可以引用该starter的功能。具体的实现方法如下1. 定义一个service类在该类中定义实现的逻辑。2. 通过一个配置类将service对应的bean注册到IOC容器主要的注解ConfigurationConditionalOnClass(MyService.class)BeanConditionalOnMissingBeanConditionalOnProperty(prefix my.starter,name enabled, havingValue true,matchIfMissing true)public MyService myService(MyProperties properties) {MyService myService new MyService();myService.setName(properties.getName());return myService;}3. 在resources/META-INF/spring.factories下面定义你的配置类的全路径类型org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.itcast.starter.AutoConfiguration4. pom.xml里面引入spring-boot-autoconfigure依赖5. 通过install命令发布到maven仓库6. 其它项目pom.xml里面引入对应的坐标即可五. 实例代码