解决spirngBoot一个非常坑的问题

360影视 2024-12-31 18:09 4

摘要:@Slf4j@RestController@Api(tags="商品信息接口")@RequestMapping("goods")@Validated//@AllArgsConstructor 不使用这个注解,其实它没什么了不起的public class Goo

springboot的注解很丰富,但是也有很多坑,一不小心就导致项目启动不了,还半天找不到问题!

比如 @AllArgsConstructor这个注解,实现了所有构造的参数,都某些情况会导致项目启动不了。比如下面的代码:

@Slf4j@RestController@Api(tags="商品信息接口")@RequestMapping("goods")@Validated@AllArgsConstructorpublic class GoodsControl extends Basecontroller{ private final GoodsService goodsService;private static String host="127.0.0.1"; @PostMapping("insert")@ApiOperation("新增商品信息")public ApiResponse insertGoods(@Valid @RequestBody GoodsDTO goodsDTO) {return goodsService.insertGoods(goodsDTO);}}

上面的代码是一个很简单的control类,但是启动springboot项目会报错,找了半天不知道哪里的问题?

后来发现使用是这一行导致的:private static Stirng host="127.0.0.1";

我左思右想,这一行代码很简单,没有任何问题呀!

最终我发现是由于@AllArgsConstructor 注解引起的,她会把普通变量当成bean进行注入,

而String等基本类型是不能注入bean的,这就导致这个出错了!

@Slf4j@RestController@Api(tags="商品信息接口")@RequestMapping("goods")@Validated//@AllArgsConstructor 不使用这个注解,其实它没什么了不起的public class GoodsControl extends Basecontroller{@Autowiredprivate GoodsService goodsService; //改成@Autowired ,不是有final注入private static Stirng host="127.0.0.1"; //注释 @AllArgsConstructor之后,host就不会当成bean注入了@PostMapping("insert")@ApiOperation("新增商品信息")public ApiResponse insertGoods(@Valid @RequestBody GoodsDTO goodsDTO) {return goodsService.insertGoods(goodsDTO);}}

来源:企商云计算中心

相关推荐