3.7k GitHub stars and counting — grpc-ecosystem/grpc-spring is a Java project TopGit is tracking across repositories on the platform. Spring Boot starter module for gRPC framework.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Dear gRPC/Spring users, in order to enhance the user experience of
grpc-ecosystem/grpc-spring, we have developed this survey as a means of
establishing a direct line of communication. Your feedback is highly appreciated.
gRPC Spring Boot Starter
README: English | 中文
Documentation: English | 中文
Features
Automatically configures and runs the gRPC server with your @GrpcService implementations
Automatically creates and manages your grpc channels and stubs with @GrpcClient
Supports other grpc-java flavors (e.g.
Reactive gRPC (RxJava),
grpc-kotlin, ...)
Server-side: Should work for all grpc-java flavors (io.grpc.BindableService based)
Client-side: Requires custom StubFactorys
Currently build-in support:
grpc-java
(Please report missing ones, so we can add support for them)
Supports Spring-Security
Supports Spring Cloud
Server-side: Adds grpc-port information to the service registration details
Currently natively supported:
Consul
Eureka
Nacos
(Please report missing ones, so we can add support for them)
Client-side: Reads the service's target addresses from spring's DiscoveryClient (all flavors)
Supports Spring Sleuth as distributed tracing solution
(If brave-instrumentation-grpc is present)
Supports global and custom gRPC server/client interceptors
Automatic metric support (micrometer/actuator based)
Also works with (non-shaded) grpc-netty
Versions
The latest version is 3.1.0.RELEASE it was compiled with spring-boot 3.2.4 and spring-cloud 2023.0.0
but it is also compatible with a large variety of other versions.
An overview of all versions and their respective library versions can be found in our documentation.
Note: This project can also be used without Spring-Boot, however that requires some manual bean configuration.
Usage
gRPC Server + Client
To add a dependency using Maven, use the following:
Annotate your server interface implementation(s) with @GrpcService
@GrpcService
public class GrpcServerService extends GreeterGrpc.GreeterImplBase {
@Override
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
HelloReply reply = HelloReply.newBuilder().setMessage("Hello ==> " + req.getName()).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
}
By default, the grpc server will listen to port 9090. These and other
settings
can be changed via Spring's property mechanism. The server uses the grpc.server. prefix.
Refer to our documentation for more details.
gRPC Client
To add a dependency using Maven, use the following:
It is possible to configure the target address for each client individually.
However in some cases, you can just rely on the default configuration.
You can customize the default url mapping via NameResolver.Factory beans. If you don't configure that bean,
then the default uri will be guessed using the default scheme and the name (e.g.: dns:/<name>):
These and other
settings
can be changed via Spring's property mechanism. The clients use the grpc.client.(serverName). prefix.
Refer to our documentation for more details.
Running with (non-shaded) grpc-netty
This library supports both grpc-netty and grpc-netty-shaded.
The later one might prevent conflicts with incompatible grpc-versions or conflicts between libraries that require different versions of netty.
Note: If the shaded netty is present on the classpath, then this library will always favor it over the non-shaded grpc-netty one.
You can use it with Maven like this:
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>${grpcVersion}</version>
</dependency>
<!-- For both -->
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-spring-boot-starter</artifactId>
<version>...</version>
<exclusions>
<exclusion>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- For the server (only) -->
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
<version>...</version>
<exclusions>
<exclusion>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- For the client (only) -->
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-client-spring-boot-starter</artifactId>
<version>...</version>
<exclusions>
<exclusion>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
</exclusion>
</exclusions>
</dependency>
and like this when using Gradle:
implementation "io.grpc:grpc-netty:${grpcVersion}"
implementation 'net.devh:grpc-spring-boot-starter:...' exclude group: 'io.grpc', module: 'grpc-netty-shaded' // For both
implementation 'net.devh:grpc-client-spring-boot-starter:...' exclude group: 'io.grpc', module: 'grpc-netty-shaded' // For the client (only)
implementation 'net.devh:grpc-server-spring-boot-starter:...' exclude group: 'io.grpc', module: 'grpc-netty-shaded' // For the server (only)
Example-Projects
Read more about our example projects here.
Troubleshooting
Refer to our documentation for help.
Contributing
Contributions are always welcomed! Please see CONTRIBUTING.md for detailed guidelines.
How active is development on grpc-ecosystem/grpc-spring?
The most recent commit recorded on grpc-ecosystem/grpc-spring was 3 months ago, based on the GitHub push timestamp. The repository has 853 forks — one of the better signals of community interest.
How does grpc-ecosystem/grpc-spring compare to other Backend projects?
grpc-ecosystem/grpc-spring is tracked by TopGit in the Backend category, with 3.7k GitHub stars and written in Java. Browse the Backend topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does grpc-ecosystem/grpc-spring have?
grpc-ecosystem/grpc-spring has 3.7k GitHub stars — refresh the page for the live number, or check github.com/grpc-ecosystem/grpc-spring. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What is grpc-ecosystem/grpc-spring?
grpc-ecosystem/grpc-spring (grpc-ecosystem/grpc-spring) is a Java project on GitHub. From the project's own README: Spring Boot starter module for gRPC framework.
What language is grpc-ecosystem/grpc-spring written in?
grpc-ecosystem/grpc-spring is written primarily in Java. GitHub's language field is based on the largest share of bytes in the default branch.
What topics is grpc-ecosystem/grpc-spring associated with?
GitHub's repository topics for grpc-ecosystem/grpc-spring: "grpc", "grpc-framework", "grpc-java", "java", "spring", "spring-boot", "spring-boot-grpc", "spring-boot-starter", "spring-cloud". TopGit's editorial category is Backend.
Why is grpc-ecosystem/grpc-spring categorized under Backend?
TopGit places grpc-ecosystem/grpc-spring in the Backend category based on its GitHub topics and description (tagged: "grpc", "grpc-framework", "grpc-java"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Still deciding about grpc-spring?
One click hands the question to an AI along with this page — see what it says about grpc-spring.