发一些我遇到的傻狗bug
问题如上代码为
@RestController public class HelloController { @RequestMapping(value = "/hello") // @ResponseBody public Result getHello() { Hello hello = new Hello(1, "hello"); return Result.success(hello); } }
我加了注解@RestController 还加了一个@ResponseBody注解防止它不生效 但访问时显示错误
{
"status": 406,
"error": "Not Acceptable",
"path": "/hello"
}
问了智障AI它给我改成了这样
@RestController public class HelloController1 { private static final Logger logger = LoggerFactory.getLogger(HelloController1.class); @RequestMapping(value = "/hello", produces = "application/json") public Result getHello() { try { System.out.println("hello"); Hello hello = new Hello(1, "hello"); logger.info("=============:{}", Result.success(hello)); return Result.success(hello); } catch (Exception e) { logger.error("Error occurred while processing /hello request", e); return Result.error("Internal Server Error: " + e.getMessage()); } }
然后访问显示
{
"status": 500,
"error": "Internal Server Error",
"path": "/hello"
}
你再问ai 它就一直给你bb这是你数据格式转化错误之类的一致循环 然后自己检查先是在实体类上加了注解@JsonSerialize/@JsonDeserialize 这次没报错 但返回的数据是一个空[]号
自己手动转化为json访问后正确接收字符串
百思不得其解之时发先类上有一个注解很显眼就是@Data 然后把它去了自己手动生成getter和setter方法正常访问,也就是lombok依赖出了问题,问ai说是getter和setter方法出了问题
最后得出注解@Data没有生效自动生成getter和setter方法这也是为什么加注解@JsonSerialize每有报错给了一个空的中括号。
然后做了一个对比建项目是没有勾选Lombok的启始项也就是这里
创建后自己导入Lombok依赖,这次没有报错。
{
"code": 1,
"msg": "success",
"data": {
"id": 1,
"name": "hello"
}
}
我看了两个项目的Lombok依赖版本都是一样的,也不知道是idea发癫,还是什么问题。然后我用的springboot版本是
用2.xx的版本没有以上bug其他的没试过
所以解决方法就是创建项目是不勾选Lombok起始项之后自己手动转换,或者自己手动用Gson之类的依赖自己手动转。