一个生态的发展离不开扩展的繁华,Quarkus 同样可以通过自定义扩展来抽离项目公共模块或提供给其他人使用,本文将从最基本的实现依赖注入讲述如何创建一个 Quarkus 扩展。
一、初始化扩展项目
Quarkus 提供 create-extension
Maven Mojo 来初始化您的扩展项目。
1 2 3 4
| mvn io.quarkus.platform:quarkus-maven-plugin:2.11.2.Final:create-extension -N \ -DgroupId=com.seepine \ -DextensionId=quarkus-xxx \ -DwithoutTests
|
也可以使用Quarkus Cli创建
1
| quarkus create extension com.seepine:quarkus-xxx
|
二、编写自己的依赖注入代码
1.in runtime
新建 xxxProducer.java
1 2 3 4 5 6 7 8 9
| @ApplicationScoped public class xxxProducer { @Produces @Singleton @DefaultBean public MyCustomService xxxService() { return new MyCustomService(); } }
|
2.in deployment
在 xxxQuarkusProcessor.java
中添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class QuarkusProcessor{ private static final String FEATURE = "quarkus-xxx";
@BuildStep FeatureBuildItem feature() { return new FeatureBuildItem(FEATURE); }
@BuildStep AdditionalBeanBuildItem addProducer() { return AdditionalBeanBuildItem.builder() .addBeanClass(xxxProducer.class) .setDefaultScope(DotNames.SINGLETON) .setUnremovable() .build(); } }
|
三、使用插件
1.引入
1
| implementation 'com.seepine:quarkus-xxx:1.0.0-SNAPSHOT'
|
2.使用
1
| @Inject MyCustomService myCustomService
|