我在我的抽象父服务类中使用类型变量,其中我有一些服务方法。我正在使用 @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";
}
如果我在我的任何子类服务方法中使用此注释,则回退机制工作正常。
任何帮助将不胜感激