quarkus 自定义 bean 注释 "creating" 代理,即使是 Singleton 范围
quarkus custom bean annotation "creating" proxies even with Singleton scope
我有一个 java 库,我想在 quarkus 应用程序中使用,这个库有一个我想用于 bean 加载的自定义注释,所以我写了一个 quarkus 扩展并尝试了 BeanDefiningAnnotationBuildItem方法。
从扩展部署模块中提取:
static DotName OP_RULE_ANNOTATION = DotName.createSimple(OpRule.class.getName());
static DotName SINGLETON = DotName.createSimple(Singleton.class.getName());
@BuildStep
void additionalBeanAnnotations(BuildProducer<BeanDefiningAnnotationBuildItem> beanDefiningAnnotations) {
beanDefiningAnnotations.produce(new BeanDefiningAnnotationBuildItem(OP_RULE_ANNOTATION, SINGLETON, false));
}
注解被正确检测到,bean 被加载,但是当我尝试注入它们时,它们被代理包裹,看起来 Singleton 范围被忽略了。
有人对我如何调试它有任何提示吗?
更新:
在向扩展添加测试时,我还添加了一个测试以确保那些 类 不会被代理包装并且它通过了,我没有对应用程序进行任何特殊配置(据我所知)
问题是由 dev-mode 监控引起的,用这个 属性 禁用它可以解决问题:
quarkus.arc.dev-mode.monitoring-enabled
https://quarkus.io/guides/all-config#quarkus-arc_quarkus.arc.dev-mode.monitoring-enabled
我有一个 java 库,我想在 quarkus 应用程序中使用,这个库有一个我想用于 bean 加载的自定义注释,所以我写了一个 quarkus 扩展并尝试了 BeanDefiningAnnotationBuildItem方法。
从扩展部署模块中提取:
static DotName OP_RULE_ANNOTATION = DotName.createSimple(OpRule.class.getName());
static DotName SINGLETON = DotName.createSimple(Singleton.class.getName());
@BuildStep
void additionalBeanAnnotations(BuildProducer<BeanDefiningAnnotationBuildItem> beanDefiningAnnotations) {
beanDefiningAnnotations.produce(new BeanDefiningAnnotationBuildItem(OP_RULE_ANNOTATION, SINGLETON, false));
}
注解被正确检测到,bean 被加载,但是当我尝试注入它们时,它们被代理包裹,看起来 Singleton 范围被忽略了。
有人对我如何调试它有任何提示吗?
更新: 在向扩展添加测试时,我还添加了一个测试以确保那些 类 不会被代理包装并且它通过了,我没有对应用程序进行任何特殊配置(据我所知)
问题是由 dev-mode 监控引起的,用这个 属性 禁用它可以解决问题:
quarkus.arc.dev-mode.monitoring-enabled
https://quarkus.io/guides/all-config#quarkus-arc_quarkus.arc.dev-mode.monitoring-enabled