bus: an umbrella service suite of Java components for Spring Boot teams
Bus (Enterprise Application/Service Bus) is a foundational framework and service suite; a lightweight enterprise-grade application/service framework built on Java 21+, providing standardized service suites and distributed middleware solutions.
At a glance
- What is it?
- bus is an Apache-2.0 Java project that publishes a large set of service modules, from authentication and distributed caching to rate limiting, logging and metrics, all versioned together on Maven Central. It is a suite to pick components from, not a framework you extend.
- Who is it for?
- Teams already on Spring Boot who want a curated set of infrastructure components with one consistent version line should adopt bus and start from the individual modules rather than the bus-all aggregator. It is the wrong choice for a service that needs exactly one library, for a project pinned to Java 8 or 11, and for anyone who needs a stable API across years, because the 8.8.x line shipped three releases in the last month alone.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A suite of service modules, not a framework you extend
Bus, which the project expands as Enterprise Application or Service Bus, is described as a foundational framework and service suite. That combination of words is the key to understanding what it is.
The stated goal is a comprehensive full-stack technical solution that rapidly implements business requirements, covering foundational frameworks, distributed microservices architecture, continuous integration, automated deployment and system monitoring. In practice the repository delivers that as a catalogue of Maven modules, each of which does one job, and the root directory of the project holds one directory per module: bus-all, bus-auth, bus-base, bus-bom, bus-cache, bus-core, bus-cortex, bus-crypto, bus-extra, bus-fabric, bus-gitlab, bus-health, bus-image, bus-limiter, bus-logger, bus-mapper, bus-metrics, bus-notify, bus-office, bus-opencv, bus-parent, bus-pay, bus-proxy, bus-sensitive, bus-setting, bus-shade, bus-spring, bus-starter, bus-storage, bus-tempus, bus-tracer, bus-validate and bus-vortex.
For a Java team this is closer to a curated catalog than to a framework. The pitch in the README is blunt about the motivation: everyone is welcome to explore, life is short, write less repetitive code.
The audience is Spring Boot developers who would rather take an authentication centre, a distributed cache, a rate limiter and a metrics module from one project with one version number than assemble each of those separately. The cost of that convenience is that you also inherit the suite's opinions, its Java floor and its release cadence.
The version table decides your Java floor and your group id
The README keeps a version selection table, and it is the most consequential part of the documentation for an adopter. There are three supported lines, and they differ in more than version number:
| Java 8 | [bus-all:5.x](https://central.sonatype.com/artifact/org.aoju/bus-all/5.9.9) | Compiled with java 8 |
| Java 17 | [bus-all:6.x](https://central.sonatype.com/artifact/org.aoju/bus-all/6.6.1) | Compiled with java 17, uses Jakarta EE, compatible with java 11, 17 |
| Java 21 | [bus-all:8.x](https://central.sonatype.com/artifact/org.miaixz/bus-all) | Compiled with java 21 by JDK 25, uses Jakarta EE, compatible with java 21-25 |The group id changes. The 5.x and 6.x artifacts live under org.aoju, while the 8.x line lives under org.miaixz. That is the kind of detail that breaks a build when you copy a dependency snippet from an old blog post, so it is worth checking the coordinates in your own pom before anything else.
The Java floor moves too. 5.x is compiled for Java 8, 6.x for Java 17 with Jakarta EE and compatibility back to Java 11, and 8.x is compiled with Java 21 by JDK 25 and is compatible with Java 21 through 25.
Note that the repository description says Java 21 and later while the project description paragraph in the README says Java 17 and later. The table is the more precise of the two, and the badges at the top of the README point to a Java 25 target. If your build runs on Java 17, the 6.x line is the one the table assigns to you.
bus-all is the aggregator, bus-bom is the way to pick and pin
The module table in the README marks each module with a status flag, and the first two entries set the pattern for how you consume the project.
bus-all is the microservice full aggregation module, containing all business components and common functionality. That is the one dependency to take when you want the whole suite and do not want to think about it. It is also the dependency that gives you every module's transitive baggage, which is the part to think about.
bus-bom is the dependency management module, and it exists for unified version control with support for on-demand component loading. That is the mechanism for taking two or three modules from the suite without pulling in the rest: manage versions through the BOM and let it decide which artifacts you actually need.
bus-parent sits alongside it as the parent POM, providing unified management of dependency versions, build configurations and coding standards. So there are two ways to consume the project, one for the whole suite and one for the parts, and the BOM plus parent POM is the path that scales as your service grows.
The other structural pieces are worth naming. bus-base is the basic architecture layer with entity, service and controller base classes and common business interfaces. bus-core is a core utility library with 20 or more common utility classes for concurrency, reflection, dates and collections. bus-starter is the Spring Boot starter layer, and bus-spring, bus-setting and bus-shade handle the framework integration, configuration and packaging side.
What the components actually cover
The module descriptions are where the project explains itself, and they are specific enough to be useful.
On the platform side, bus-auth is a unified authentication centre supporting OIDC, OAuth2 and SAML, integrated with 15 or more third-party login platforms. bus-cache provides distributed caching with Redis, Memcached and Hessian multi-level caching. bus-fabric is a unified HTTP client and a TCP, UDP and WebSocket communication framework. bus-limiter is a high-performance rate limiting component with token bucket, sliding window and distributed rate limiting strategies.
On the operational side, bus-logger adds dynamic log levels, a trace ID and sensitive data filtering. bus-health collects JVM, OS, container and middleware monitoring metrics in real time. bus-metrics is described as a production-grade metrics framework with a cardinality guard, EWMA rates, SLO tracking and LLM observability. bus-mapper enhances MyBatis with code generation, multi-tenancy and logical deletion extensions. bus-tracer and bus-sensitive are separate modules for tracing and for sensitive data handling, and both appear as directories at the repository root even though the visible part of the table does not describe them.
Two entries stand out as unusual. bus-cortex is a unified registry and configuration centre for API, MCP and Prompt entries, with health probing and space isolation, which is a service discovery and configuration product rather than a utility. bus-pay is a payment aggregation service integrating 20 or more payment channels including WeChat Pay, Alipay and UnionPay. If you are outside the Chinese payment market, that module is the one that does nothing for you.
The badges tell you what the project is really built against
The README opens with a row of version badges, and they are more informative than a generic compatibility statement would be. They point at Java 25, Spring Boot 4.1.1, PostgreSQL 17.x, Dubbo 3.3.x and POI 5.4.x, plus a Maven Central badge for the v8.8.x line.
Each of those is a coupling decision. Running on Spring Boot 4.1.1 means your service needs a Boot 4.x line to use the starter layer. PostgreSQL 17 is the reference database for the MyBatis enhancements in bus-mapper and for the storage modules. Dubbo 3.3 is the RPC framework the suite expects for remote calls, and the projects topic list in the repository metadata names dubbo, gateway, cache, limiter, logger, mapper, mybatis, crypto, opencv, socket, tracer, sensitive, hl7 and graalvm, which is the shape of the dependency surface.
POI 5.4 matters for bus-office, the Office document processing engine that implements Excel, Word and PPT operations on top of POI. And bus-opencv is a computer vision library wrapping OpenCV for image recognition, face detection and video analysis, which is a native library dependency rather than a pure Java one.
The practical consequence is that this is a suite with an opinionated stack. Adopting it means adopting Spring Boot 4.x and, if you use those modules, the specific database and RPC versions it is tested against. It is a fit for a team already living in that stack and a poor fit for one that is not.
Release pace, licensing and the gaps in the documentation
The version history is dense. Releases 8.8.19, 8.8.20 and 8.8.21 were published on 2026-09-20, 2026-10-10 and 2026-10-20 respectively, and the repository is not archived with a last push on 2026-10-20. That is a project shipping roughly every ten days inside a single 8.8.x line.
Frequent releases are good for fixes and bad for stability. Nothing in the README describes a long term support branch or a compatibility promise between 8.8.x patch versions, so the safe approach is to pin an exact version in your build and upgrade deliberately rather than tracking the newest tag.
The licence is Apache-2.0, with a LICENSE file and a NOTICE file at the repository root. That is a permissive licence with an explicit patent grant, so embedding the modules in a commercial product is a normal use, and the NOTICE file is the one to read if you redistribute.
The documentation gaps are real. The module table in the README is truncated part way through the list, and the visible rows do not cover several directories in the repository such as bus-sensitive, bus-setting, bus-shade, bus-spring, bus-storage, bus-tempus, bus-tracer, bus-validate and bus-vortex. There are no installation steps in the README at all, only the version table pointing at Maven Central, so the practical entry point is the project documentation site at miaixz.org rather than the README itself. For a framework meant to speed up business development, the README functions as a catalogue; the real usage guidance lives elsewhere.
Editorial conclusion
Teams already on Spring Boot who want a curated set of infrastructure components with one consistent version line should adopt bus and start from the individual modules rather than the bus-all aggregator. It is the wrong choice for a service that needs exactly one library, for a project pinned to Java 8 or 11, and for anyone who needs a stable API across years, because the 8.8.x line shipped three releases in the last month alone. Before adopting, check the Maven coordinates for your Java version, since the group id changed from org.aoju to org.miaixz for the 8.x line, and read the module table for the components you actually need.
Frequently asked questions
What Maven coordinates do I use for bus on Java 21?
The 8.x line for Java 21 is published under org.miaixz, with bus-all as the aggregation artifact. The older 5.x and 6.x lines live under org.aoju, so a dependency snippet copied from an older post will point at a group that no longer holds the current release.
Which Java versions does each bus release line support?
The README's version table states that 5.x is compiled with Java 8, 6.x is compiled with Java 17 and uses Jakarta EE while remaining compatible with Java 11 and 17, and 8.x is compiled with Java 21 by JDK 25 and is compatible with Java 21 to 25. The repository description says Java 21 and later while the README text also mentions Java 17 and later.
Can I use a single bus module instead of the whole bus-all aggregator?
Yes. The README describes bus-bom as the dependency management module with unified version control and support for on-demand component loading, and bus-parent as the parent POM that manages dependency versions, build configuration and coding standards. Both exist so a service can take a few modules rather than the full aggregation.
How often are new bus versions published?
The recent releases are 8.8.19 on 2026-09-20, 8.8.20 on 2026-10-10 and 8.8.21 on 2026-10-20, and the last push was on 2026-10-20. That is roughly ten days between releases inside the 8.8.x line, so pinning an exact version is the sensible approach.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/miaixzo-bus)Was this useful?