Command type literal pos: unknown; Fallback type literal pos: unknown] with root cause

异常信息

Command method: public java.util.List com.tuxc.controller.DeptController.list();
Fallback method: public com.tuxc.pojo.Dept com.tuxc.controller.DeptController.hystrixGet();
Hint: Different size of types variables.
Command  type literals size = 2: [java.util.List<com.tuxc.pojo.Dept>, class com.tuxc.pojo.Dept]
Fallback type literals size = 1: [class com.tuxc.pojo.Dept]

Command type literal pos: unknown; Fallback type literal pos: unknown] with root cause

com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: Incompatible return types. 
Command method: public java.util.List com.tuxc.controller.DeptController.list();
Fallback method: public com.tuxc.pojo.Dept com.tuxc.controller.DeptController.hystrixGet();
Hint: Different size of types variables.
Command  type literals size = 2: [java.util.List<com.tuxc.pojo.Dept>, class com.tuxc.pojo.Dept]
Fallback type literals size = 1: [class com.tuxc.pojo.Dept]

Command type literal pos: unknown; Fallback type literal pos: unknown
	at com.netflix.hystrix.contrib.javanica.utils.FallbackMethod.validateReturnType(FallbackMethod.java:165) ~[hystrix-javanica-1.5.18.jar:1.5.18]
	at com.netflix.hystrix.contrib.javanica.utils.FallbackMethod.validateReturnType(FallbackMethod.java:130) ~[hystrix-javanica-1.5.18.jar:1.5.18]
	at com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect.setFallbackMethod(HystrixCommandAspect.java:333) ~[hystrix-javanica-1.5.18.jar:1.5.18]
	at com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect.access$300(HystrixCommandAspect.java:64) ~[hystrix-javanica-1.5.18.jar:1.5.18]
	at com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect$MetaHolderFactory.metaHolderBuilder(HystrixCommandAspect.java:176) ~[hystrix-javanica-1.5.18.jar:1.5.18]
	at com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect$CommandMetaHolderFactory.create(HystrixCommandAspect.java:258) ~[hystrix-javanica-1.5.18.jar:1.5.18]
	at com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect$MetaHolderFactory.create(HystrixCommandAspect.java:166) ~[hystrix-javanica-1.5.18.jar:1.5.18]
	at 

原因与解决:Hystrix的熔断方法一定要跟原方法相似

    //@HystrixCommand(fallbackMethod = "hystrixGet")
    @HystrixCommand(fallbackMethod = "hystrixGet")
    @GetMapping("/dept")
    public List<Dept> list(){
    
    
        List<Dept> list = new ArrayList<>();
        list.add(new Dept().setName("王根基").setId(1));
        list.add(new Dept().setName("周去去").setId(2));
        list.add(new Dept().setName("郑在搞").setId(3));
        list.add(new Dept().setName("迪卢克").setId(4));
        return list;
    }

    //备选方法 上面的方法报错时调用
    public List<Dept> hystrixGet(){
    
    
        List<Dept> list = new ArrayList<>();
        list.add(new Dept().setId(1).setName("默认").setDbSource("默认"));
        return list;
    }
    //错误演示 返回值不同
   /* public Dept hystrixGet(){
        return new Dept().setId(1).setName("默认").setDbSource("默认");
    }*/

猜你喜欢

转载自blog.csdn.net/weixin_46684099/article/details/117934198