由于自己的项目需要,使用aop来做操作日志的记录,先看一下我出问题的代码吧
@RestController @Api(tags = "用户操作API") @RequestMapping(value = "/sys/user", produces = MediaType.APPLICATION_JSON_VALUE) public class UserController { @Autowired private UserService userService; /*对用户得所有操作都以user info id为主,及用户id为info id*/ @ControllerLogSave(operations = "添加用户") @ApiOperation("添加用户") @PostMapping("/add") private ResponseDto<Object> addUser(@Valid UserDto user) throws InitiativeException { userService.addUser(user); return ResponseDto.newOkResponseDto(); } }这只是部分代码,在我添加了Aop之后,除了这一个控制器出问题以外,其他控制器都是正常的,就是这个控制器的接口在访问时会报null指针异常,原因是注入的userService注入失败了,为null,当时我就纳闷了,如果是我的aop有问题的话不应该只有这个有问题啊,疯狂打断点找问题所在,只在于小生能力有限,通过断点并未找到问题所在,最后才知道:aop只能适用于 protect 和public 修饰符修饰的方法。
https://blog.csdn.net/wangh92/article/details/79581129
只要把private改为public就可以了,我平时的编写习惯在controller层的所有接口方法都是public修饰的,结果这一个控制器里面的接口方法全是private修饰,我也不知道是不是我当时秀逗了,不过也因祸得福,加强了下切面的知识了。
