摘要:@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);}}来源:企商云计算中心
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!