- Fix @LocalGrpcPort to ignore the inprocess factory port
- Don't set load balancer policy for inprocess channel factory
Signed-off-by: Chris Bono <chris.bono@gmail.com>
Instead of an instance method we now use a static supports() method
to determine if a factory matches a given stub type. This is better
for the lifecycle since bean definitions have to be created before
and factory can actually be created and autowired.
It's a slightly unusual contract, but it makes it much harder to
make a mistake with lifecycle, and much easier to install custom
StubFactory instances (as @Beans)
GrpcClientRegistry was responsible for both, which causes lifecycle
issues when users don't follow recommendations. This change
pushes the bean registration firmly down a level into an
ImportBeanDefinitionRegistrar. Also helps with AOT because the AOT
processor only runs the IBDR at build time.
In an app with servlets *and* a native gRPC server for instance,
the global AuthenticationManagerBuilder (the @Bean) should be
treated as a parent for the one used by GrpcSecurity. It's the
same in HttpSecurity. Slightly more complicated than necessary
when there is only native gRPC security, but at least it now
works, and makes it easier to introduce multiple GrpcSecurity
instances in future if necessary (like with HttpSecurity it
could be a prototype).
This adds a starter module that includes the Spring gRPC
core module and the grpc-stub dependency.
Also, makes the `grpc-stub` dependency optional in Spring
gRPC core module.
Signed-off-by: Chris Bono <chris.bono@gmail.com>
Currently the spring-grpc-core imposes an opinion on Netty.
The core module should not have an opinion, but rather the
starter enforces the opinion.
Also, makes spring-grpc-core optional in the autconfigure
module as the autoconfigure will eventually be moved into
Spring Boot and at that time everything is optional.
Signed-off-by: Chris Bono <chris.bono@gmail.com>