@Repository添加的原因:出现下面的问题:
因为@Mapper是属于mybatis,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。
改掉springbean自动装配的办法,但是仍报错。可以选择在mapper interface上面,添加@Repository注解和@Mapper注解:
@Mapper与@Repository的详细区别:
1. @Mapper与@Repository的相同点
两个注解都可在dao/mapper层使用(用来标记持久层),生成相应代理对象bean注入到spring容器中。
@Mapper与@Repository的不同点:
- @Mapper是mybatis的注解,可以单独使用,也允许存在在多个mapper文件,它不需要在Spring中配置扫描地址,通过xml里面的namespace里面的接口地址,生成Bean后注入到Service层中。
- @Repository是spring提供的注解,能够将该类注册成Bean。被依赖注入,但是使用该注解后,在启动类上要加@MapperScan来表明Mapper类的位置,否则扫描不到。但在idea中,使用@Repository可以消除在业务层中注入mapper对象时的错误。
Spring Validation的应用
- 导入validation坐标 (引入validation的依赖)
- 在参数上添加@Pattern注解,指定校验规则 (在相应参数的前面加)
- 在Controller类上添加@Validated注解 (必须有)
- 在全局异常处理器中处理参数校验失败的异常(调试时实体)
全局异常的代码(基本类似):
@ExceptionHandler(Exception.class)
public Result Result(Exception e){
e.printStackTrace();
return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage():"系统异常");
}
其中返回的对象Result可以改变,其他的一般不变
三、令牌
JWT的介绍:
jwt的使用:
- 先引入jwt的依赖和单元测试的依赖
- 在test中编写jwt的测试代码(可以直接查询)