RateLimitAutoConfiguration { @Bean @ConfigurationPropertiesBinding public StringToMatchTypeConverter stringToMatchTypeConverter() { return new StringToMatchTypeConverter(); }  @Bean @ConfigurationPropertiesBinding StringToMatchTypeConverter stringToMatchTypeConverter(); @Bean @ConditionalOnMissingBean(RateLimiterErrorHandler.class) RateLimiterErrorHandler rateLimiterErrorHandler(); @Bean ZuulFilter rateLimiterPreFilter(final RateLimiter rateLimiter, final RateLimitProperties rateLimitProperties,
                                           final RouteLocator routeLocator, final RateLimitKeyGenerator rateLimitKeyGenerator,
                                           final RateLimitUtils rateLimitUtils, final ApplicationEventPublisher eventPublisher); @Bean ZuulFilter rateLimiterPostFilter(final RateLimiter rateLimiter, final RateLimitProperties rateLimitProperties,
                                            final RouteLocator routeLocator, final RateLimitKeyGenerator rateLimitKeyGenerator,
                                            final RateLimitUtils rateLimitUtils); @Bean @ConditionalOnMissingBean(RateLimitKeyGenerator.class) RateLimitKeyGenerator ratelimitKeyGenerator(final RateLimitProperties properties,
                                                       final RateLimitUtils rateLimitUtils);  }
@Test public void testStringToMatchTypeConverter() { contextRunner.withPropertyValues(PREFIX + ".repository=BUCKET4J_JCACHE") .run((context) -> assertThat(context).hasSingleBean(StringToMatchTypeConverter.class)); }