HandlerInterceptor
用于拦截请求的处理过程。HandlerInterceptor
接口定义了在请求处理的不同阶段执行的方法,允许我们在请求到达处理程序之前和之后执行自定义逻辑。
- preHandle:在请求到达处理程序之前被调用。可以用于执行一些前置处理逻辑,例如身份验证、日志记录等。如果此方法返回true,则请求继续传递到处理程序;如果返回false,则请求处理终止。
- postHandle:在请求处理程序执行之后,视图渲染之前被调用。可以用于执行一些后置处理逻辑,例如修改模型数据、记录执行时间等。
- afterCompletion:在整个请求完成之后被调用。通常用于清理资源、记录最终日志等。可以在这里获取到处理程序的执行结果和可能的异常信息。
依赖注入(DI)
依赖注入(Dependency Injection, DI)是一种设计模式,也是Spring框架的核心概念之一。
作用:去除Java类之间的依赖关系,实现松耦合,以便于开发测试。例如,A类要依赖B类,A类不再直接创建B类,而是把这种依赖关系配置在外部xml文件(或java config文件)中,然后由Spring容器根据配置信息创建、管理bean类。
class Player{
Weapon weapon;
// weapon 被注入进来
Player(Weapon weapon){
this.weapon = weapon;
}
public void attack() {
weapon.attack();
}
public void setWeapon(Weapon weapon){
this.weapon = weapon;
}
}
Weapon
类的实例并不在代码中创建,而是外部通过构造函数传入,传入类型是父类Weapon
,所以传入的对象类型可以是任何Weapon
子类。
理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”
●谁依赖于谁:当然是应用程序依赖于IoC容器;
●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;
●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
@Resource
@Resource注解是Java EE中常用的依赖注入注解之一,它可以用于类、字段、方法和构造函数上,在不同作用域中进行依赖注入。
1.标识要注入的依赖对象
@Component
public class TokenUtils {
@Resource
AdminService adminService;
@Resource
BusinessService businessService;
}
2.指定依赖对象的作用域
可以通过@Resource注解指定依赖对象的作用域。
@Resource(name="foo", type=Bar.class)
private Bar bar;
@PostConstruct注解
JavaEE5引入了@PostConstruct和@PreDestroy两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作。
该注解的方法在整个Bean初始化中的执行顺序:
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的初始化方法)
import javax.annotation.PostConstruct;
@Component
public class Utils {
@Autowired
private UserService userService;
@PostConstruct
void init() {
userService.doSomething(); //userService注入后执行一些初始化操作
}
}
参考:
理解依赖注入(DI – Dependency Injection) - 知乎 (zhihu.com)
PostConstruct注解详细使用说明及理解-CSDN博客
新增一个角色
entity->mapper接口->mapper.xml ->service ->修改tokenUtils和JwtInterceptor ->controller前端操作接口