springboot的小技巧(二)

77 阅读2分钟

@Repository添加的原因:出现下面的问题:

image.png

因为@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的不同点:

  1. @Mapper是mybatis的注解,可以单独使用,也允许存在在多个mapper文件,它不需要在Spring中配置扫描地址,通过xml里面的namespace里面的接口地址,生成Bean后注入到Service层中。
  2. @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可以改变,其他的一般不变

三、令牌

image.png

JWT的介绍:

image.png

jwt的使用:

  1. 先引入jwt的依赖和单元测试的依赖
  2. 在test中编写jwt的测试代码(可以直接查询)