[Feature Request] GraalVM Native Image support for `org.apache.seata:seata-spring-boot-starter`

Author: xuxiaowei-com-cnCreated Sep 16, 2026Updated Sep 16, 2026

Check Ahead

  • I have searched the issues of this repository and believe that this is not a duplicate.

  • I am willing to try to implement this feature myself.

Why you need it?

  • 业务应用引入 seata-spring-boot-starter 后无法构建 GraalVM Native Image,导致用了 Seata 就不能 native 化。
  • An application that depends on seata-spring-boot-starter cannot be built as a GraalVM native image, so adopting Seata rules out going native.

How it could be?

  • 提供 native 可达性元数据,按 META-INF/native-image/org.apache.seata/seata-spring-boot-starter/ 下的 jni-config.jsonpredefined-classes-config.jsonproxy-config.jsonreflect-config.jsonresource-config.jsonserialization-config.json 拆分提交(参考 Nacos Client 的布局)。
  • 补充 AOT Runtime Hints,覆盖自动配置、SPI(EnhancedServiceLoader)、配置资源与 @GlobalTransactional 代理。
  • 新增客户端 native 兼容性测试套件与 CI workflow,并在 README 中说明支持范围与构建命令。

  • Ship the native reachability metadata as separate files under META-INF/native-image/org.apache.seata/seata-spring-boot-starter/: jni-config.json, predefined-classes-config.json, proxy-config.json, reflect-config.json, resource-config.json, and serialization-config.json (same layout as Nacos Client).
  • Add AOT runtime hints covering auto-configuration, SPI loading (EnhancedServiceLoader), configuration resources, and the @GlobalTransactional proxies.
  • Add a client-side native compatibility test suite plus a CI workflow, and document the supported scope and build commands in the README.

Other related information

  • 完整依赖树
  • Full dependency tree
[INFO] Scanning for projects...
[INFO] 
[INFO] Using the MultiThreadedBuilder implementation with a thread count of 16
[INFO] 
[INFO] ----------------< cn.com.xuxiaowei:user-seata-2025.1.x >----------------
[INFO] Building user-seata-2025.1.x 0.0.1-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- dependency:3.10.0:tree (default-cli) @ user-seata-2025.1.x ---
[INFO] cn.com.xuxiaowei:user-seata-2025.1.x:jar:0.0.1-SNAPSHOT
[INFO] +- com.alibaba.cloud:spring-cloud-starter-alibaba-seata:jar:2025.1.0.1-SNAPSHOT:compile
[INFO] |  +- org.springframework.boot:spring-boot-webclient:jar:4.1.1:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:4.1.1:compile
[INFO] |  |  |  \- org.springframework:spring-context:jar:7.0.9:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-http-client:jar:4.1.1:compile
[INFO] |  |  +- org.springframework:spring-webflux:jar:7.0.9:compile
[INFO] |  |  |  \- org.springframework:spring-beans:jar:7.0.9:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-http-codec:jar:4.1.1:runtime
[INFO] |  +- org.springframework.boot:spring-boot-starter-aspectj:jar:4.1.1:compile
[INFO] |  |  +- org.springframework:spring-aop:jar:7.0.9:compile
[INFO] |  |  \- org.aspectj:aspectjweaver:jar:1.9.25.1:compile
[INFO] |  +- org.apache.seata:seata-spring-boot-starter:jar:2.6.0:compile
[INFO] |  |  +- org.apache.seata:seata-spring-autoconfigure-client:jar:2.6.0:compile
[INFO] |  |  |  \- org.apache.seata:seata-spring-autoconfigure-core:jar:2.6.0:compile
[INFO] |  |  \- org.apache.seata:seata-all:jar:2.6.0:compile
[INFO] |  |     +- org.springframework:spring-tx:jar:7.0.9:compile
[INFO] |  |     +- io.netty:netty-all:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-buffer:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-base:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-dns:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-haproxy:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-compression:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-http:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-http2:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-http3:jar:4.2.17.Final:compile
[INFO] |  |     |  +- org.jctools:jctools-core:jar:4.0.6:compile
[INFO] |  |     |  +- io.netty:netty-transport-native-unix-common:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-memcache:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-mqtt:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-redis:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-smtp:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-socks:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-stomp:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-xml:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-protobuf:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-marshalling:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-common:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-handler:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-handler-proxy:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-handler-ssl-ocsp:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-resolver:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-resolver-dns:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-rxtx:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-sctp:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-udt:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-classes-epoll:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-classes-kqueue:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-resolver-dns-classes-macos:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-classes-io_uring:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec-classes-quic:jar:4.2.17.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-transport-native-epoll:jar:linux-aarch_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-transport-native-epoll:jar:linux-riscv64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-transport-native-io_uring:jar:linux-x86_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-transport-native-io_uring:jar:linux-aarch_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-transport-native-io_uring:jar:linux-riscv64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-transport-native-kqueue:jar:osx-x86_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-resolver-dns-native-macos:jar:osx-x86_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-resolver-dns-native-macos:jar:osx-aarch_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-codec-native-quic:jar:linux-x86_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-codec-native-quic:jar:linux-aarch_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-codec-native-quic:jar:osx-x86_64:4.2.17.Final:runtime
[INFO] |  |     |  +- io.netty:netty-codec-native-quic:jar:osx-aarch_64:4.2.17.Final:runtime
[INFO] |  |     |  \- io.netty:netty-codec-native-quic:jar:windows-x86_64:4.2.17.Final:runtime
[INFO] |  |     +- org.antlr:antlr4:jar:4.8:compile
[INFO] |  |     |  +- org.antlr:antlr4-runtime:jar:4.8:compile
[INFO] |  |     |  +- org.antlr:antlr-runtime:jar:3.5.2:compile
[INFO] |  |     |  +- org.antlr:ST4:jar:4.3:compile
[INFO] |  |     |  +- org.abego.treelayout:org.abego.treelayout.core:jar:1.0.3:compile
[INFO] |  |     |  +- org.glassfish:javax.json:jar:1.0.4:compile
[INFO] |  |     |  \- com.ibm.icu:icu4j:jar:61.1:compile
[INFO] |  |     +- com.alibaba:fastjson:jar:2.0.58:compile
[INFO] |  |     |  \- com.alibaba.fastjson2:fastjson2-extension:jar:2.0.58:compile
[INFO] |  |     |     \- com.alibaba.fastjson2:fastjson2:jar:2.0.58:compile
[INFO] |  |     +- com.alibaba:druid:jar:1.2.28:compile
[INFO] |  |     +- com.typesafe:config:jar:1.2.1:compile
[INFO] |  |     +- org.apache.commons:commons-lang3:jar:3.20.0:compile
[INFO] |  |     +- org.apache.commons:commons-pool2:jar:2.13.1:compile
[INFO] |  |     +- commons-pool:commons-pool:jar:1.6:compile
[INFO] |  |     +- org.apache.dubbo.extensions:dubbo-filter-seata:jar:1.0.2:compile
[INFO] |  |     +- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  |     +- com.google.guava:guava:jar:33.4.8-jre:compile
[INFO] |  |     |  +- com.google.guava:failureaccess:jar:1.0.3:compile
[INFO] |  |     |  +- com.google.errorprone:error_prone_annotations:jar:2.36.0:compile
[INFO] |  |     |  \- com.google.j2objc:j2objc-annotations:jar:3.0.0:compile
[INFO] |  |     +- com.github.ben-manes.caffeine:caffeine:jar:3.2.4:compile
[INFO] |  |     \- net.bytebuddy:byte-buddy:jar:1.18.11:compile
[INFO] |  \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.21.5:compile
[INFO] |     +- com.fasterxml.jackson.core:jackson-annotations:jar:2.21:compile
[INFO] |     +- com.fasterxml.jackson.core:jackson-core:jar:2.21.5:compile
[INFO] |     \- com.fasterxml.jackson.core:jackson-databind:jar:2.21.5:compile
[INFO] +- com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:jar:2025.1.0.1-SNAPSHOT:compile
[INFO] |  +- com.alibaba.cloud:spring-cloud-alibaba-commons:jar:2025.1.0.1-SNAPSHOT:compile
[INFO] |  +- com.alibaba.cloud:spring-alibaba-nacos-config:jar:2025.1.0.1-SNAPSHOT:compile
[INFO] |  |  \- org.springframework:spring-web:jar:7.0.9:compile
[INFO] |  |     \- io.micrometer:micrometer-observation:jar:1.17.1:compile
[INFO] |  +- com.alibaba.nacos:nacos-client:jar:3.1.1:compile
[INFO] |  |  +- com.alibaba.nacos:nacos-client-basic:jar:3.1.1:compile
[INFO] |  |  |  \- com.alibaba.nacos:nacos-auth-plugin:jar:3.1.1:compile
[INFO] |  |  +- com.alibaba.nacos:nacos-encryption-plugin:jar:3.1.1:compile
[INFO] |  |  +- com.alibaba.nacos:nacos-logback-adapter-12:jar:3.1.1:compile
[INFO] |  |  +- com.alibaba.nacos:logback-adapter:jar:1.1.4:compile
[INFO] |  |  +- com.alibaba.nacos:nacos-log4j2-adapter:jar:3.1.1:compile
[INFO] |  |  +- org.apache.httpcomponents.client5:httpclient5:jar:5.6.4:compile
[INFO] |  |  |  \- org.apache.httpcomponents.core5:httpcore5-h2:jar:5.4.3:compile
[INFO] |  |  +- org.apache.httpcomponents.core5:httpcore5:jar:5.4.3:compile
[INFO] |  |  +- io.prometheus:simpleclient:jar:0.16.0:compile
[INFO] |  |  |  +- io.prometheus:simpleclient_tracer_otel:jar:0.16.0:compile
[INFO] |  |  |  |  \- io.prometheus:simpleclient_tracer_common:jar:0.16.0:compile
[INFO] |  |  |  \- io.prometheus:simpleclient_tracer_otel_agent:jar:0.16.0:compile
[INFO] |  |  +- org.yaml:snakeyaml:jar:2.6:compile
[INFO] |  |  \- io.micrometer:micrometer-core:jar:1.17.1:compile
[INFO] |  |     +- org.jspecify:jspecify:jar:1.0.1:compile
[INFO] |  |     +- io.micrometer:micrometer-commons:jar:1.17.1:compile
[INFO] |  |     \- org.hdrhistogram:HdrHistogram:jar:2.2.2:runtime
[INFO] |  +- org.springframework.cloud:spring-cloud-commons:jar:5.0.3:compile
[INFO] |  |  \- org.springframework.security:spring-security-crypto:jar:7.1.1:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-context:jar:5.0.3:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:2.0.18:compile
[INFO] |  \- jakarta.annotation:jakarta.annotation-api:jar:3.0.0:compile
[INFO] +- com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:2025.1.0.1-SNAPSHOT:compile
[INFO] +- org.springframework.boot:spring-boot-starter-jdbc:jar:4.1.1:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:4.1.1:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:4.1.1:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.5.38:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.5.38:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.25.5:compile
[INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.25.5:compile
[INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:2.0.18:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-autoconfigure:jar:4.1.1:compile
[INFO] |  +- org.springframework.boot:spring-boot-jdbc:jar:4.1.1:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-sql:jar:4.1.1:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-transaction:jar:4.1.1:compile
[INFO] |  |  |  \- org.springframework.boot:spring-boot-persistence:jar:4.1.1:compile
[INFO] |  |  \- org.springframework:spring-jdbc:jar:7.0.9:compile
[INFO] |  \- com.zaxxer:HikariCP:jar:7.0.2:compile
[INFO] +- org.springframework.boot:spring-boot-starter-webmvc:jar:4.1.1:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-jackson:jar:4.1.1:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-jackson:jar:4.1.1:compile
[INFO] |  |     \- tools.jackson.core:jackson-databind:jar:3.1.5:compile
[INFO] |  |        \- tools.jackson.core:jackson-core:jar:3.1.5:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:4.1.1:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-tomcat-runtime:jar:4.1.1:compile
[INFO] |  |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:11.0.24:compile
[INFO] |  |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:11.0.24:compile
[INFO] |  |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:11.0.24:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-tomcat:jar:4.1.1:compile
[INFO] |  +- org.springframework.boot:spring-boot-http-converter:jar:4.1.1:compile
[INFO] |  \- org.springframework.boot:spring-boot-webmvc:jar:4.1.1:compile
[INFO] |     +- org.springframework.boot:spring-boot-servlet:jar:4.1.1:compile
[INFO] |     \- org.springframework:spring-webmvc:jar:7.0.9:compile
[INFO] |        \- org.springframework:spring-expression:jar:7.0.9:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-loadbalancer:jar:5.0.3:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-starter:jar:5.0.3:compile
[INFO] |  |  \- org.bouncycastle:bcprov-jdk18on:jar:1.85.2:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-loadbalancer:jar:5.0.3:compile
[INFO] |  |  +- io.projectreactor:reactor-core:jar:3.8.7:compile
[INFO] |  |  |  \- org.reactivestreams:reactive-streams:jar:1.0.4:compile
[INFO] |  |  \- io.projectreactor.addons:reactor-extra:jar:3.6.1:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-cache:jar:4.1.1:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-cache:jar:4.1.1:compile
[INFO] |  |     \- org.springframework:spring-context-support:jar:7.0.9:compile
[INFO] |  \- com.stoyanr:evictor:jar:1.0.0:compile
[INFO] +- com.mysql:mysql-connector-j:jar:9.7.0:runtime
[INFO] +- org.projectlombok:lombok:jar:1.18.46:compile (optional)
[INFO] \- org.springframework.boot:spring-boot-starter-webmvc-test:jar:4.1.1:test
[INFO]    +- org.springframework.boot:spring-boot-starter-jackson-test:jar:4.1.1:test
[INFO]    +- org.springframework.boot:spring-boot-starter-test:jar:4.1.1:test
[INFO]    |  +- org.springframework.boot:spring-boot-test:jar:4.1.1:test
[INFO]    |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:4.1.1:test
[INFO]    |  +- com.jayway.jsonpath:json-path:jar:2.10.0:test
[INFO]    |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.5:test
[INFO]    |  |  \- jakarta.activation:jakarta.activation-api:jar:2.1.4:test
[INFO]    |  +- net.minidev:json-smart:jar:2.6.0:test
[INFO]    |  |  \- net.minidev:accessors-smart:jar:2.6.0:test
[INFO]    |  |     \- org.ow2.asm:asm:jar:9.7.1:test
[INFO]    |  +- org.assertj:assertj-core:jar:3.27.7:test
[INFO]    |  +- org.awaitility:awaitility:jar:4.3.0:test
[INFO]    |  +- org.hamcrest:hamcrest:jar:3.0:test
[INFO]    |  +- org.junit.jupiter:junit-jupiter:jar:6.0.3:test
[INFO]    |  |  +- org.junit.jupiter:junit-jupiter-api:jar:6.0.3:test
[INFO]    |  |  |  +- org.opentest4j:opentest4j:jar:1.3.0:test
[INFO]    |  |  |  +- org.junit.platform:junit-platform-commons:jar:6.0.3:test
[INFO]    |  |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO]    |  |  +- org.junit.jupiter:junit-jupiter-params:jar:6.0.3:test
[INFO]    |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:6.0.3:test
[INFO]    |  |     \- org.junit.platform:junit-platform-engine:jar:6.0.3:test
[INFO]    |  +- org.mockito:mockito-core:jar:5.23.0:test
[INFO]    |  |  +- net.bytebuddy:byte-buddy-agent:jar:1.18.11:test
[INFO]    |  |  \- org.objenesis:objenesis:jar:3.3:test
[INFO]    |  +- org.mockito:mockito-junit-jupiter:jar:5.23.0:test
[INFO]    |  +- org.skyscreamer:jsonassert:jar:1.5.3:test
[INFO]    |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO]    |  +- org.springframework:spring-core:jar:7.0.9:compile
[INFO]    |  |  \- commons-logging:commons-logging:jar:1.3.6:compile
[INFO]    |  +- org.springframework:spring-test:jar:7.0.9:test
[INFO]    |  \- org.xmlunit:xmlunit-core:jar:2.11.0:test
[INFO]    +- org.springframework.boot:spring-boot-webmvc-test:jar:4.1.1:test
[INFO]    |  \- org.springframework.boot:spring-boot-web-server:jar:4.1.1:compile
[INFO]    \- org.springframework.boot:spring-boot-resttestclient:jar:4.1.1:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.680 s (Wall Clock)
[INFO] Finished at: 2026-09-16T15:41:33+08:00
[INFO] ------------------------------------------------------------------------
  • Related: #8161 (proposal), #8162 (seata-server), #8165 (namingserver).