Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法抛出';java.lang.StackOverflowerr';例外。无法计算com.sun.proxy.$Proxy0.toString()_Java_Methods_Reflect - Fatal编程技术网

方法抛出';java.lang.StackOverflowerr';例外。无法计算com.sun.proxy.$Proxy0.toString()

方法抛出';java.lang.StackOverflowerr';例外。无法计算com.sun.proxy.$Proxy0.toString(),java,methods,reflect,Java,Methods,Reflect,我正在使用JDKProxy实现mybatis,但我有一个问题 我没有使用proxy.toString()的代码 公共类引导{ 公共静态void start(){ MySqlSession sqlSession=新建MySqlSession(); TestMapper TestMapper=sqlSession.getMapper(TestMapper.class); Test Test=testMapper.selectByPrimaryKey(2); } 公共静态void main(字符串[]

我正在使用JDKProxy实现mybatis,但我有一个问题

我没有使用
proxy.toString()的代码

公共类引导{
公共静态void start(){
MySqlSession sqlSession=新建MySqlSession();
TestMapper TestMapper=sqlSession.getMapper(TestMapper.class);
Test Test=testMapper.selectByPrimaryKey(2);
}
公共静态void main(字符串[]args){
start();
}
}
@数据
公共类MySqlSession{
公共T getMapper(类clazz){
return(T)Proxy.newProxyInstance(
clazz.getClassLoader()//类加载器
新类[]{clazz}//接口
新MapperProxy(本))//代理类
}
公共T selectByPrimaryKey(MapperData MapperData,对象参数){
返回executor.query(mapperData,参数);
}
}
//它不是“proxy.toString”
//错误就在这个方法中
公共类MapperProxy实现调用处理程序{
公共对象调用(对象代理、方法、对象[]args)抛出Throwable{
试一试{
int separate=method.getDeclaringClass().getName().lastIndexOf(“.”);
字符串映射器=method.getDeclaringClass().getName().substring(分开+1);
MapperData MapperData=
sqlSession.getConfiguration()
.getMapperRegistory()
.get(映射器+“+”方法.getName());
if(null!=mapperData){
System.out.println(String.format(“SQL[%s],参数[%s]”,mapperData.getSql(),args[0]);
类clazz=sqlSession.getClass();
方法realMethod=clazz.getMethod(方法.getName(),新类[]{MapperData.Class,Object.Class});
返回realMethod.invoke(sqlSession、mapperData、args);
}
invoke(sqlSession,args);
}捕获(调用targetException ite){
抛出它。getCause();
}
}
}

如果我运行
返回method.invoke(sqlSession,args),这个bug消失了,所以我认为这个bug在这个方法中

lombok会自动为u生成toString方法

你可以查看注释的文档

@日期

为所有字段生成getter、有用的toString方法以及检查所有非瞬态字段的hashCode和equals实现。还将为所有非最终字段以及构造函数生成setter。
相当于@Getter@Setter@RequiredArgsConstructor@ToString@EqualsAndHashCode。

在我的例子中,它是围绕JPA存储库方法的一个配置错误的切入点

public Object logAroundDatabase(ProceedingJoinPoint joinPoint)throws Throwable {

    String table = joinPoint.getTarget().toString(); //Substituted getThis() with getTarget()

    return null;
}

您能提供stacktrace的第一个和最后一个PRT吗?这将提供一些有关问题的线索