mica-auto 采用 Annotation Processor 技术,自动生成 java spi 和 Spring boot starter 的配置。
功能
- 生成
spring.factories。
- 生成
spring-devtools.properties
- 生成
FeignClient 到 spring.factories 中,供 mica-cloud 中完成 Feign 自动化配置。
- 生成
java spi 配置,需要添加 @AutoService 注解。
版本说明
| version |
spring boot version |
java version |
| 3.0.1 |
3.x |
17 |
| 2.3.2 |
1.x ~ 3.x |
1.8 |
使用场景
主要是用来避免 Spring boot 主项目包同 子项目或者子模块 包不一致,避免包扫描不到的问题。
spring boot starter利器,自动生成 spring.factories 配置。
- 多模块项目中的
子项目(不建议主项目添加 mica-auto)。
原理
扫描对应的注解,自动生成相应的配置,支持组合注解。
注解说明
| 注解 |
生成的 spring.factories 或 spi key |
| @AutoContextInitializer |
ApplicationContextInitializer |
| @AutoListener |
ApplicationListener |
| @AutoRunListener |
SpringApplicationRunListener |
| @AutoEnvPostProcessor |
EnvironmentPostProcessor |
| @AutoFailureAnalyzer |
FailureAnalyzer |
| @Component |
EnableAutoConfiguration |
| @AutoIgnore |
忽略,不生成到 spring.factories |
| @AutoService |
生成 java spi 配置 |
依赖
maven
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-auto</artifactId> <version>${version}</version> <scope>provided</scope> </dependency>
|
gradle >= 5.x
annotationProcessor("net.dreamlu:mica-auto:${version}")
|
gradle < 5.x
compileOnly "net.dreamlu:mica-auto:${version}"
|
注意: 如果你项目中使用了 Lombok 请将 mica-auto 的依赖放置到 Lombok 后面。
示例
java spi
- 添加注解
@AutoService 指定 spi 接口 Processor.class。
package foo.bar;
import javax.annotation.processing.Processor;
@AutoService(Processor.class) public class MyProcessor implements Processor { }
|
@AutoService 将会自动生成 spi 的配置文件 META-INF/services/javax.annotation.processing.Processor 内容如下:
Spring boot starter
- 组合有
@Component 的注解,例如:@Configuration,其他的类似 ApplicationContextInitializer 需要自行添加注解,详见 mica-auto 注解说明。
@Configuration(proxyBeanMethods = false) public class MicaAutoConfiguration {
@Bean public SpringContextUtil springUtils() { return new SpringContextUtil(); }
}
|
- 将会生成
META-INF/spring.factories 文件,避免手动编写或者修改该文件,内容如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ net.dreamlu.mica.config.MicaAutoConfiguration
|
微信 vs 公众号

精彩内容每日推荐!!!