通过@Enable*注解触发Spring Boot配置
在Spring Boot:定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法:
- spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置;
- @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
可以看出我们自己定义的注解起作用了。如果没有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配置相关推荐
- idea提示未配置 Spring Boot 配置注解处理器解决方法
未配置 Spring Boot 配置注解处理器 解决方法: 在pom.xml里添加依赖 <dependency><groupId>org.springframework.boo ...
- Spring Boot 配置元数据指南
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 遗失的拂晓 来源 | 公众号「锅外的大佬」 1. 概览 在编写 Spring Bo ...
- 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 ...
- 在Spring boot 配置过滤器(filter)
在spring boot 配置servlet filter 逻辑上与配置spring 是一样的. 不过相比spring 更加简化配置的难度. 这里只需要两步 1 创建一个自定义顾虑器并继承spring ...
- spring boot配置druid(德鲁伊)
spring boot配置druid(德鲁伊) 关于druid的介绍请看 阿里巴巴温少访谈 1.引入相关依赖,全部依赖是上一篇spring boot+mybatis依赖的基础上,再加上下边的依赖,如下 ...
- spring boot配置mybatis和事务管理
spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...
- spring boot配置dubbo注意事项
spring boot配置dubbo注意事项 通过前两篇文章,知道了spring boot配置dubbo有两种方式.具体请回顾前两篇文章吧. 现在主要是说下spring boot在自己的applica ...
- spring boot配置dubbo(XML)
上一篇写的是spring boot在自己的properties配置文件中简单配置dubbo的步骤,那种配置有很多的功能(比如超时时间.是否检查)等等,配置起来也挺麻烦的,而我们也习惯传统的那种XML形 ...
- 超全、超详的Spring Boot配置讲解笔记
超全.超详的Spring Boot配置讲解笔记 springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改. application.prop ...
最新文章
- 能和LoadRunner匹敌的VS2010/2012Web负载测试
- 面试彩蛋2:分别用循环和递归实现下列函数
- R语言ggplot2可视化绘制分组水平并行条形图(bar plot)并为条形图内添加标签
- 怎样使破解网页的禁止复制黏贴
- tensorflow 进阶(二),BP神经网络
- 关于自增id 你可能还不知道
- oracle 删除数据 快慢,记录一下Drop表空间的速度
- 2 TileMapObject的使用
- 头号小游戏玩家科普指南
- IOS-C语言小练习02
- sql脚本比较大,sqlserver 无法导入,就用cmd命令执行
- 操作数据库出现错误的查找问题方法
- 计算机科学自考本科的科目,自考本科计算机专业考哪些
- SQL2008用户sa登录失败(错误18456)解决方法
- windows10下F1-F11快捷键及window+Dor+E快捷键打开关闭控制
- D-Feet的复杂类型使用攻略(DBUS)
- 苍南五凤茶进杭城“香”约西湖龙井, 茶旅融合助力乡村振兴!
- couldn't create PTY
- 小米机器人虚拟墙设置_大家都有就它独缺,姗姗来迟的虚拟墙方案终更新,小米扫地机器人...
- python画学习曲线_Python在同一个figu上用scikitlearn绘制几个学习曲线