Examples of Spring Boot applications hosting some kind of service:
- gRPC
- REST
or both. There is also examples of application without test artifacts, as examples of what a deployed application will actually see.
Please note:
- The examples have unit tests which try out various configuration settings
- For local development, a shortened 'classic' one-line is the default
- To examine log statements in more details use
CompositeConsoleOutputControl.useHumanReadableJsonEncoder()
for JSON output
The gRPC interceptor order overview:
@GrpcService(interceptors = {
// Add trace headers (correlation-id and such)
OrderedCorrelationIdGrpcMdcContextServerInterceptor.class,
// Logging
OrderedGrpcLoggingServerInterceptor.class,
RequestResponseGrpcExceptionHandlerInterceptor.class,
// Validation
MyValidationServerInterceptor.class,
}, sortInterceptors = true)
Note that interceptors are sorted using the Ordered
interface. Recommended setup; global in bold (cannot be disabled)
- 0: GrpcExceptionInterceptor - GRPC_GLOBAL_EXCEPTION_HANDLING
- Exception advice etc
- 50:
OrderedCorrelationIdGrpcMdcContextServerInterceptor
- cloud-logging
entur.logging.grpc.trace.mdc.interceptor-order
- 2500: GRPC_TRACING_METRICS (global)
- included in spring-grpc
- 5000: GRPC_SECURITY_EXCEPTION_HANDLING
- included in spring-grpc
- 5100: GRPC_SECURITY_AUTHENTICATION
- included in spring-grpc
- 5170:
OrderedGrpcLoggingServerInterceptor
- cloud-logging: Request-response logging
entur.logging.request-response.grpc.server.interceptor-order
- 5175:
RequestResponseGrpcExceptionHandlerInterceptor
- cloud-logging: request-response logging helper, wraps
GrpcExceptionInterceptor
- make sure
GRPC_GLOBAL_EXCEPTION_HANDLING
runs before logging response
- make sure
entur.logging.request-response.grpc.server.exception-handler.interceptor-order
- cloud-logging: request-response logging helper, wraps
- 5200: GRPC_SECURITY_AUTHORISATION
- included in spring-grpc
- 6000:
MyValidationServerInterceptor
- grpc-validation: Validation of proto messages
Corresponding properties
entur.logging.grpc.trace.mdc.interceptor-order=50
entur.logging.request-response.grpc.server.interceptor-order=5170
entur.logging.request-response.grpc.server.exception-handler.interceptor-order=5175