最近闲来无聊, 搞了搞RocketMQ.
网上找了找starter包, 没找到什么合适的, 故决定自己写一个.
接下来的工作就是翻文档.
恩, 翻文档.
文档里面有个用git提交日志做的sample, 可以看下.
暂时做出来的功能很简单, 只是根据annotation扫包, 具体的配置还没有处理.
大概需要注意的就几个地方.
1, @Configuration类的conditional加载条件.
2, Properties类, 属性的加载, 从spring.properties或yaml文件.
3, META-INF下的spring.factories文件里的配置.
4, dependency里面对于rocketmq的引用optional为true.
5, 使用AutoConfigurationPackages.get()获取扫包的所有package列表
6, 扫包用的ClassPathBeanDefinitionScanner, 继承该类, 使用step5中获得的package列表去扫bean. 添加创建bean的filter, 使用addIncludeFilter方法和AnnotationTypeFilter.
7, 扫完包获取所有对应的beanDefinationHolder, 对bean进行配置和初始化操作.(写到这一步).
8, 建个sample项目, 验证autoConfiguration是否好用.
9, 忘了写, 自己的autoconfigure项目要依赖springboot的spring-boot-configuration-processor.
大概要注意的点就这些.
具体的项目结构, 依赖导入等等的细节自行去看springboot项目的源码, 写的很清晰.
网友评论