JaxRsSecurityConfig冲突:quarkus-spring-data-rest与quarkus-resteasy-reactive兼容问题
冲突根本原因
quarkus-spring-data-rest 扩展默认依赖阻塞式 quarkus-resteasy 实现,与响应式 quarkus-resteasy-reactive 属于两套独立的 JAX-RS 技术栈,两者都会注册同一个 security.jaxrs.deny-unannotated-endpoints 配置项,因此启动时触发重复配置冲突。
可行解决方案
方案一:排除 quarkus-spring-data-rest 内置的阻塞式 resteasy 依赖
若使用Maven,在quarkus-spring-data-rest的依赖声明中添加排除规则:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-spring-data-rest</artifactId> <exclusions> <exclusion> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy</artifactId> </exclusion> <exclusion> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy-jackson</artifactId> </exclusion> </exclusions> </dependency>若使用Gradle,配置如下:
implementation("io.quarkus:quarkus-spring-data-rest") { exclude group: 'io.quarkus', module: 'quarkus-resteasy' exclude group: 'io.quarkus', module: 'quarkus-resteasy-jackson' }排除完成后,额外引入
quarkus-resteasy-reactive-jackson扩展保证序列化能力正常即可。Quarkus 2.15及以上版本已验证该组合可正常兼容@ServerExceptionMapper和@RepositoryRestResource两个注解的能力。方案二:替换技术栈组合规避冲突
若不需要@RepositoryRestResource的自动REST接口暴露能力,仅需Spring风格的Repository实现,可直接使用quarkus-spring-data-jpa+quarkus-resteasy-reactive-spring-web组合,自行实现接口层逻辑,完全避免依赖冲突。
内容的提问来源于stack exchange,提问作者Ethan Miller
相关产品推荐
相关产品推荐

