在 spring-cloud-netflix-hystrix 中覆盖 HystrixCommandAspect bean
Override HystrixCommandAspect bean in spring-cloud-netflix-hystrix
HystrixCommandAspect
bean 在 HystrixCircuitBreakerConfiguration
class 中声明,但我想使用我自己的 HystrixCommandAspect
自定义实现并注入不同的 bean。
申请:
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableCircuitBreaker
@Import(HystrixConfiguration.class)
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
配置:
@Configuration
public class HystrixConfiguration {
@Bean
@Primary
public HystrixCommandAspect hystrixCommandAspect(){
return new com.hystrix.HystrixCommandAspect();
}
}
自定义 HystrixCommandAspect:
package com.hystrix;
@Aspect
public class HystrixCommandAspect extends com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect {
...
}
但是,当我使用注释 @EnableCircuitBreaker
时,它使用 HystrixCircuitBreakerConfiguration
并且甚至不加载我自己的 @Bean
定义。
我将 spring 升级到最新版本,这解决了问题。我还在日志中注意到它说它正在覆盖 HystrixCircuitBreakerConfiguration
.
中提供的 bean
HystrixCommandAspect
bean 在 HystrixCircuitBreakerConfiguration
class 中声明,但我想使用我自己的 HystrixCommandAspect
自定义实现并注入不同的 bean。
申请:
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableCircuitBreaker
@Import(HystrixConfiguration.class)
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
配置:
@Configuration
public class HystrixConfiguration {
@Bean
@Primary
public HystrixCommandAspect hystrixCommandAspect(){
return new com.hystrix.HystrixCommandAspect();
}
}
自定义 HystrixCommandAspect:
package com.hystrix;
@Aspect
public class HystrixCommandAspect extends com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect {
...
}
但是,当我使用注释 @EnableCircuitBreaker
时,它使用 HystrixCircuitBreakerConfiguration
并且甚至不加载我自己的 @Bean
定义。
我将 spring 升级到最新版本,这解决了问题。我还在日志中注意到它说它正在覆盖 HystrixCircuitBreakerConfiguration
.