В моем приложении bean-компоненты не подключаются автоматически, если я использую аннотации @Cacheable и/или @CacheEvict.
Я понял это методом исключения. Если закомментировать строки с @Cacheable и @CacheEvict, то всё ок. Если вы их раскомментируете, все bean-компоненты внутри RestClientWorker будут иметь значение null.
При вызове метода getOrders MyService выдается исключение:
Невозможно вызвать "org.springframework. web.client.RestClient.post()", потому что "this.restClient" имеет значение null
Но на самом деле (после отладки) все bean-компоненты внутри RestClientWorker имеют значение null.
В чем может быть проблема?
pom.xml
& l t ; p r o j e c t x m l n s = & q u o t ; h t t p : / / m a v e n . a p a c h e . o r g / P O M / 4 . 0 . 0 & q u o t ; < b r / > x m l n s : x s i = & q u o t ; h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e & q u o t ; < b r / > x s i : s c h e m a L o c a t i o n = & q u o t ; h t t p : / / m a v e n . a p a c h e . o r g / P O M / 4 . 0 . 0 h t t p : / / m a v e n . a p a c h e . o r g / x s d / m a v e n - 4 . 0 . 0 . x s d & q u o t ; & g t ; < b r / > & l t ; m o d e l V e r s i o n & g t ; 4 . 0 . 0 & l t ; / m o d e l V e r s i o n & g t ; < b r / > & l t ; p a r e n t & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - p a r e n t & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 3 . 3 . 3 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / p a r e n t & g t ; < b r / > < b r / > & l t ; g r o u p I d & g t ; c o m . e x a m p l e & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; a p p & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 1 . 0 . 0 & l t ; / v e r s i o n & g t ; < b r / > < b r / > & l t ; p r o p e r t i e s & g t ; < b r / > & l t ; m a v e n . c o m p i l e r . s o u r c e & g t ; 2 1 & l t ; / m a v e n . c o m p i l e r . s o u r c e & g t ; < b r / > & l t ; m a v e n . c o m p i l e r . t a r g e t & g t ; 2 1 & l t ; / m a v e n . c o m p i l e r . t a r g e t & g t ; < b r / > & l t ; / p r o p e r t i e s & g t ; < b r / > < b r / > & l t ; d e p e n d e n c i e s & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - w e b & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - c a c h e & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - v a l i d a t i o n & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . p r o j e c t l o m b o k & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; l o m b o k & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 1 . 1 8 . 3 4 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - t e s t & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; s c o p e & g t ; t e s t & l t ; / s c o p e & g t ; < b r / > & l t ; e x c l u s i o n s & g t ; < b r / > & l t ; e x c l u s i o n & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . j u n i t . v i n t a g e & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; j u n i t - v i n t a g e - e n g i n e & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; / e x c l u s i o n & g t ; < b r / > & l t ; / e x c l u s i o n s & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - c o n f i g u r a t i o n - p r o c e s s o r & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; o p t i o n a l & g t ; t r u e & l t ; / o p t i o n a l & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - a c t u a t o r & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; i o . m i c r o m e t e r & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; m i c r o m e t e r - r e g i s t r y - p r o m e t h e u s & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 1 . 1 3 . 3 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; c o m . c u s t o m & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; p a m - c l i e n t s - l i b & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 1 . 0 . 0 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; c o m . c u s t o m & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; l i b - l o g g e r & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 1 . 0 . 1 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . y a m l & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s n a k e y a m l & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 2 . 3 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . w i r e m o c k & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; w i r e m o c k - j e t t y 1 2 & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 3 . 9 . 1 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; / d e p e n d e n c i e s & g t ; < b r / > < b r / > & l t ; b u i l d & g t ; < b r / > & l t ; p l u g i n s & g t ; < b r / > & l t ; p l u g i n & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - m a v e n - p l u g i n & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 2 . 7 . 0 & l t ; / v e r s i o n & g t ; < b r / > & l t ; d e p e n d e n c i e s & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . c o d e h a u s . p l e x u s & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; p l e x u s - u t i l s & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; 3 . 5 . 0 & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . a p a c h e . m a v e n . s h a r e d & l t ; / g r o u p I d & g t ; < b r / > maven-shared-utils
3.3.4
org.projectlombok
lombok
true
org.apache.maven.plugins
maven-clean-plugin
3.2.0
org.codehaus.plexus
plexus-utils
3.5.0
org.jacoco
jacoco-maven-plugin
0.8.8
org.codehaus.plexus
plexus-utils
3.5.0
org.apache.maven.plugins
maven-compiler-plugin
3.10.1
org.codehaus.plexus
plexus-utils
3.5.0
org.apache.maven.plugins
maven-install-plugin
2.5.2
org.codehaus.plexus
plexus-utils
3.5.0
org.apache.maven.shared
maven-shared-utils
3.3.4
org.apache.maven.plugins
maven-surefire-plugin
3.0.0-M6
org.apache.maven.plugins
maven-dependency-plugin
3.3.0
dom4j
dom4j
1.6.1
Application.java
@SpringBootApplication
@EnableAsync(proxyTargetClass = true) // used for other case
@EnableCaching
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
BaseConfig.java
@Configuration
public class BaseConfig {
@Value("${HTTP_CLIENT_MAX_CONN_TOTAL:2000}")
private Integer maxPoolSize;
@Value("${HTTP_CLIENT_MAX_PER_ROUTE:1000}")
private Integer maxPerRoute;
@Value("${HTTP_CLIENT_MAIN_TIMEOUT:2000}")
private Integer timeout;
@Bean
public ObjectMapper mapper(Jackson2ObjectMapperBuilder builder) {
return builder.modules(new JavaTimeModule())
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.featuresToEnable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, SerializationFeature.INDENT_OUTPUT)
.serializationInclusion(JsonInclude.Include.NON_NULL)
.build();
}
@Bean
public HttpClient httpClient(MeterRegistry meterRegistry){
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(maxPoolSize);
connectionManager.setDefaultMaxPerRoute(maxPerRoute);
new PoolingHttpClientConnectionManagerMetricsBinder(connectionManager, "http-client-
pool").bindTo(meterRegistry);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(timeout, TimeUnit.MILLISECONDS)
.setResponseTimeout(timeout, TimeUnit.MILLISECONDS)
.build();
return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig)
.setConnectionManager(connectionManager)
.evictExpiredConnections()
.build();
}
@Bean
public ClientHttpRequestFactory httpRequestFactory(HttpClient httpClient){
return new HttpComponentsClientHttpRequestFactory(httpClient);
}
@Bean
@Primary
public RestClient restClient(RestClient.Builder restClientBuilder, @Qualifier("mapper")
ObjectMapper mapper,
UrlsConfig urlsConfig, HttpClient httpClient) {
List
Подробнее здесь: https://stackoverflow.com/questions/789 ... se-caching
Бобы не подключаются автоматически, если использовать кеширование ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как создать пружинную библиотеку, а потребители могут автоматически импортировать все бобы?
Anonymous » » в форуме JAVA - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как создать пружинную библиотеку, а потребители могут автоматически импортировать все бобы?
Anonymous » » в форуме JAVA - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как создать пружинную библиотеку, а потребители могут автоматически импортировать все бобы?
Anonymous » » в форуме JAVA - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Используйте кеширование браузера в IIS (проблема со скоростью страницы Google)
Anonymous » » в форуме C# - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-