Introduces a new, default require(String poolName) method on the PoolResolver interface to require that a Pool object exist, otherwise the resolver will throw a RuntimeException, such as an IllegalStateException.
Additionally, this improvement will add additional PoolResolver implementations, such as, but not limited to:
- SinglePoolPoolResolver - which returns a single Pool instance
- CompositePoolResolver - to compose multiple PoolResolvers into a single PoolResolver implementation using the Composite Software Design Pattern.
- [Smart]DelegatingPoolResolver - used to compose PoolResolver beans defined in the Spring context, ordered using the @Order annotation, thereby allowing users to define a "Strategy" for resolving a Pool with fallback options.
The [Smart]DelegatingPoolResolver implementation would be useful from a framework/testing perspective, allowing users to plugin an implementation at configuration and/or runtime.