自定义的Spring Boot starter如何设置自动配置注解
2024-09-30 21:57:22
本文首发于个人网站:自定义的Spring Boot starter如何设置自动配置注解
在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法:
- spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置;
- @Enable:有时需要由starter的用户触发*查找自动配置文件的过程。
实战
- 接着上篇文章的例子,首先将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加入到应用上下文中。
Spring Boot 1.x系列
- Spring Boot的自动配置、Command-line-Runner
- 了解Spring Boot的自动配置
- Spring Boot的@PropertySource注解在整合Redis中的使用
- Spring Boot项目中如何定制HTTP消息转换器
- Spring Boot整合Mongodb提供Restful接口
- Spring中bean的scope
- Spring Boot项目中使用事件派发器模式
- Spring Boot提供RESTful接口时的错误处理实践
- Spring Boot实战之定制自己的starter
- Spring Boot项目如何同时支持HTTP和HTTPS协议
本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。
最新文章
- centos7下操作防火墙
- js 0.1+0.2!=0.3
- 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建&;&;向社区贡献代码
- 用Masonry实现键盘的收回和弹出
- UVA 10499 (13.08.06)
- CodeForces 567A Gerald is into Art
- Servlet 过滤器
- Hbase写数据,存数据,读数据的详细过程
- Oracle文章中常用数据表的描述
- 媒体查询media参数以及其兼容性问题
- 在ARC下,assign和weak的区别
- 蒸米一步一步ROP X64学习笔记
- Linux开发黑客
- ActiveMQ挂了,重启一直无法将所有实例启起来的问题
- 如何正确使用QThread
- Android 热修复方案Tinker(一) Application改造
- python selenium爬取QQ空间方法
- 史上最全的浏览器 CSS &; JS Hack 手册
- VK Cup 2016 - Qualification Round 2 B. Making Genome in Berland
- 关于wordpress主题、插件上传和下载问题及其上传图片权限问题解决方案