mica-auto 使用文档
如梦技术
# mica-auto 使用文档
mica-auto
采用 Annotation Processor
技术,自动生成 java spi
和 Spring boot starter
的配置。
# 功能
- 生成
spring.factories
。 - 生成
spring-devtools.properties
- 生成
FeignClient
到spring.factories
中,供mica-cloud
中完成Feign
自动化配置。 - 生成
java spi
配置,需要添加@AutoService
注解。
# 使用场景
主要是用来避免 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
内容如下:
foo.bar.MyProcessor
# Spring boot starter
- 组合有
@Component
的注解,例如:@Configuration
,其他的类似ApplicationContextInitializer
需要自行添加注解,详见mica-auto
注解说明。
/**
* 自动配置
*
* @author l.cm
*/
@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 公众号
精彩内容每日推荐!!!