在Spring Boot:定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法:

  1. spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置;
  2. @Enable:有时需要由starter的用户触发*查找自动配置文件的过程。

How Do

  • 接着上篇文章的例子,首先将spring.factories中的内容注释掉
#org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
#com.test.bookpubstarter.dbcount.DbCountAutoConfiguration
  • 创建元注解(meta-annotation),即在db-count-starter/src/main/java/org/test/bookpubstarter/dbcount目录下新建EnableDbCounting.java文件。
package com.test.bookpubstarter.dbcount;import org.springframework.context.annotation.Import;
import java.lang.annotation.*;@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(DbCountAutoConfiguration.class)
@Documented
public @interface EnableDbCounting {
}
  • 在BookPubApplication类中删去之前手动创建的DbCountRunner的spring bean,然后用@EnableDbCounting注解修饰BookPubApplication类。
package com.test.bookpub;import com.test.bookpubstarter.dbcount.EnableDbCounting;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@EnableDbCounting
public class BookPubApplication {public static void main(String[] args) {SpringApplication.run(BookPubApplication.class, args);}
}
  • 启动应用程序,设置日志级别为DEBUG

由starter的用户手动触发配置

可以看出我们自己定义的注解起作用了。如果没有spring.factories,那么在程序启动的时候Spring Boot的自动配置机制不会试图解析DbCountAutoConfiguration类。一般来说,@Component注解的作用范围就是在BookPubApplication所在的目录以及各个子目录,即com.test.bookpub.*,而DbCountAutoConfiguration是在org.test.bookpubstarter.dbcount目录下,因此不会被扫描到。

@EnableDbCounting注解通过@Import(DbCountAutoConfiguration.class)找到对应的配置类,因此通过用@EnableDbCounting修饰BookPubApplication,就是告诉Spring Boot在启动过程中要把DbCountAutoConfiguration加入到应用上下文中。

通过@Enable*注解触发Spring Boot配置相关推荐

  1. idea提示未配置 Spring Boot 配置注解处理器解决方法

    未配置 Spring Boot 配置注解处理器 解决方法: 在pom.xml里添加依赖 <dependency><groupId>org.springframework.boo ...

  2. Spring Boot 配置元数据指南

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 遗失的拂晓 来源 | 公众号「锅外的大佬」 1. 概览 在编写 Spring Bo ...

  3. Spring Boot 2.0 配置图文教程第 2 章 Spring Boot 配置## 书信息 demo.book.name=[Spring Boot 2.x Core Action] demo.b

    本章内容 1.自定义属性快速入门 2.外化配置 3.自动配置 4.自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 第 2 章 Spring B ...

  4. 在Spring boot 配置过滤器(filter)

    在spring boot 配置servlet filter 逻辑上与配置spring 是一样的. 不过相比spring 更加简化配置的难度. 这里只需要两步 1 创建一个自定义顾虑器并继承spring ...

  5. spring boot配置druid(德鲁伊)

    spring boot配置druid(德鲁伊) 关于druid的介绍请看 阿里巴巴温少访谈 1.引入相关依赖,全部依赖是上一篇spring boot+mybatis依赖的基础上,再加上下边的依赖,如下 ...

  6. spring boot配置mybatis和事务管理

    spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...

  7. spring boot配置dubbo注意事项

    spring boot配置dubbo注意事项 通过前两篇文章,知道了spring boot配置dubbo有两种方式.具体请回顾前两篇文章吧. 现在主要是说下spring boot在自己的applica ...

  8. spring boot配置dubbo(XML)

    上一篇写的是spring boot在自己的properties配置文件中简单配置dubbo的步骤,那种配置有很多的功能(比如超时时间.是否检查)等等,配置起来也挺麻烦的,而我们也习惯传统的那种XML形 ...

  9. 超全、超详的Spring Boot配置讲解笔记

    超全.超详的Spring Boot配置讲解笔记 springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改. application.prop ...

最新文章

  1. 能和LoadRunner匹敌的VS2010/2012Web负载测试
  2. 面试彩蛋2:分别用循环和递归实现下列函数
  3. R语言ggplot2可视化绘制分组水平并行条形图(bar plot)并为条形图内添加标签
  4. 怎样使破解网页的禁止复制黏贴
  5. tensorflow 进阶(二),BP神经网络
  6. 关于自增id 你可能还不知道
  7. oracle 删除数据 快慢,记录一下Drop表空间的速度
  8. 2 TileMapObject的使用
  9. 头号小游戏玩家科普指南
  10. IOS-C语言小练习02
  11. sql脚本比较大,sqlserver 无法导入,就用cmd命令执行
  12. 操作数据库出现错误的查找问题方法
  13. 计算机科学自考本科的科目,自考本科计算机专业考哪些
  14. SQL2008用户sa登录失败(错误18456)解决方法
  15. windows10下F1-F11快捷键及window+Dor+E快捷键打开关闭控制
  16. D-Feet的复杂类型使用攻略(DBUS)
  17. 苍南五凤茶进杭城“香”约西湖龙井, 茶旅融合助力乡村振兴!
  18. couldn't create PTY
  19. 小米机器人虚拟墙设置_大家都有就它独缺,姗姗来迟的虚拟墙方案终更新,小米扫地机器人...
  20. python画学习曲线_Python在同一个figu上用scikitlearn绘制几个学习曲线

热门文章

  1. 漫画 | 阿姨,我不想努力了
  2. 再见,HttpClient!再见,Okhttp!
  3. 别说,Cerebro还真好用!老板再也不用担心ES集群了
  4. 面试官问:Redis变慢了,你会怎么排查?
  5. 总结:被MySQL UTF8编码坑的惨痛教训...
  6. Java8中一个极其强悍的新特性,很多人没用过(非常实用)
  7. Nginx 高可用集群解决方案 Nginx + Keepalived
  8. 面试官:你分析过mybatis工作原理吗?
  9. 他自学成才,坐拥38w粉丝,技术类第一大号!
  10. 如何在linux下写脚本定时备份mysql数据库