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 公众号
精彩内容每日推荐!!!