0

我在我的抽象父服务类中使用类型变量,其中我有一些服务方法。我正在使用 @HystrixCommand 注释来使用一些后备方法。

这是我的示例代码

@Service
public abstract class MyAbstractParentClass<T extends IModel<T>,S extends Serializable> implements IService<T, S>, InitializingBean{


private MyRepo<T, S > repo;

@Override
@HystrixCommand(fallbackMethod="handleError", groupKey="MyClass", commandKey="findUserTest")
public T findUserTest(S userId){
    String str = null;
    System.out.println(str.length());// intentional nullpointer exception
    T user  = repo.findOne(userId);
    return user;
}

public T handleError(S userId){
    T user  = repo.findOne(userId);
    return user;
}

public abstract MyRepo<T, S> getRepository();

@Override
public void afterPropertiesSet() throws Exception {
    repo = getRepository();

}
}

但不幸的是,在使用注释后,我的 api 无法正常工作,它给出了以下 java 堆空间错误。

{ "timestamp": 1500581418921, "status": 500, "error": "Internal Server Error", "exception": "java.lang.OutOfMemoryError", "message": "Java heap space", "path": "/rest/api/path" }

如果我不使用任何类型变量,它在父类中工作正常

@HystrixCommand(fallbackMethod="handleError", groupKey="MyClass", commandKey="findUserTest")
public String findUserTest(String userId){
    String str = null;
    System.out.println(str.length());

    return userId;
}

public String handleError(String userId){

    return "Error Handled";
}

如果我在我的任何子类服务方法中使用此注释,则回退机制工作正常。
任何帮助将不胜感激

4

0 回答 0