🚀 Spring gRPC: ¡Promovido oficialmente al portafolio Spring!


Buenas noticias para los amantes de las microarquitecturas modernas: Spring gRPC ha pasado de ser un proyecto experimental a ser parte oficial del portafolio de Spring.
Y sí, eso significa que ahora es una opción más estable, más soportada y más integrada para quienes quieran usar gRPC con Spring Boot. ¡Vamos a verlo!
🆙 ¿Qué significa esta promoción?
Spring gRPC ahora tiene:
- Soporte oficial por parte del equipo de Spring.
- Mayor integración con Spring Boot.
- Ciclo de vida de soporte alineado con Spring Boot (especialmente a partir de la versión 1.0.0).
- ¡Y sí, ya puedes encontrar la versión
0.8.0
en Maven Central!
⚡ ¿Qué trae de nuevo la versión 0.8.0?
Aunque no es una versión con grandes features, sí tiene algunos cambios importantes:
- Migración a protobuf-java v4.
- Dependencias actualizadas.
- Disponible en Spring Initializr ✅
Puedes empezar fácilmente creando un proyecto en start.spring.io y marcando la opción gRPC.
🧙♂️ Magia con @ImportGrpcClients
Una de las funcionalidades más potentes es que ahora puedes generar tus gRPC stubs automáticamente como beans con solo una anotación:
@SpringBootApplication
@ImportGrpcClients("localhost:9090")
public class MiAplicacionGrpc {
public static void main(String[] args) {
SpringApplication.run(MiAplicacionGrpc.class, args);
}
}
Esto escanea tu classpath en busca de stubs generados (como AbstractBlockingStub
) y los registra como beans listos para usar.
😎 ¿Y si no quiero usar la anotación?
También puedes definirlo mediante propiedades de configuración:
spring.grpc.client.default-channel.address=localhost:9090
Y luego simplemente hacer autowire del stub:
@Component
public class ServicioRemoto {
public ServicioRemoto(SimpleBlockingStub stub) {
// Llamada a métodos RPC
}
}
🌮 Ejemplo simpático: tu taquería digital con Spring gRPC
Supongamos que estás creando una app para pedir tacos. Tienes un microservicio TacoService
que ofrece tacos deliciosos a través de gRPC. Así sería un stub generado desde tu .proto
:
public class TacoServiceGrpc {
public static class TacoServiceBlockingStub extends AbstractBlockingStub<TacoServiceBlockingStub> {
public TacoResponse pedirTaco(TacoRequest request) {
// gRPC llamaría al servidor real aquí
}
}
}
Con Spring gRPC, podrías inyectar el cliente así de fácil:
@Component
public class TacoCliente {
private final TacoServiceGrpc.TacoServiceBlockingStub stub;
public TacoCliente(TacoServiceGrpc.TacoServiceBlockingStub stub) {
this.stub = stub;
}
public void pedirCarnitas() {
TacoRequest request = TacoRequest.newBuilder().setTipo("carnitas").build();
TacoResponse response = stub.pedirTaco(request);
System.out.println("🌮 Taco recibido: " + response.getDescripcion());
}
}
Y en tu application.properties
:
spring.grpc.client.default-channel.address=localhost:9090
¡Listo! Tienes una taquería digital usando gRPC con apenas unas líneas de configuración.
🛠️ ¿Necesitas más control?
Usa @ImportGrpcClients
con atributos personalizados:
- Establece tipos de stub específicos
- Escanea paquetes específicos
- Usa tu propio
StubFactory
(¡Spring gRPC ya incluye varios!)
🔜 ¿Qué viene en la 0.9.0?
El equipo está trabajando en:
- Cambios internos en
@ImportGrpcClients
(si tienes unStubFactory
personalizado, ojo con esto). - Probar el nuevo proceso de publicación en Maven Central.
🎯 Nada debería romperse, pero es una señal clara de que el proyecto sigue avanzando y madurando.
✅ Conclusión
Spring gRPC se ha ganado un lugar oficial en la familia Spring, y eso significa estabilidad, soporte y futuro.
Si estabas buscando una forma moderna de comunicar tus servicios con gRPC sin salir del mundo Spring, esta es la señal que esperabas.
¡Hora de explorarlo! 🚀
Subscribe to my newsletter
Read articles from Carlos Exposito directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
