如何在springboot中注册severletFilter

问题起源

之前好好的项目突然之间访问不了,在postman测试所有接口都显示AES解密失败,推测可能是请求接口时加入了解密,查看配文件发现多了一个配置
xxx.cipher.enabled=true
注释写的是启用加密
如是就去探究了一下这个加密是如何实现

实现

如何在springboot中注册severletFilter_第1张图片
发现了这个类,可以看到当配置的值value为true时这个配置类就会生效(@ConditionalOnProperty满足条件时配置类就会生效),那么这个配置类是干什么的呢,其实主要就是注入了两个bean,一个EncryService,一个FilterRegistrationBean,其实再仔细观察就是注入FilterRegistrationBean,EncryService是用来对请求响应做加密解密的

百度了一下FilterRegistrationBean是干什么的,简言之就是一句话:FilterRegistrationBean配置自定义拦截器拦截路径,由于springboot里面是没有xml文件来配置拦截器的,所以springboot提供了FilterRegistrationBean来配置自定义拦截器

那么如何使用FilterRegistrationBean来配置自定义路劲拦截器呢
上图中的代码就可以看出主要有三个步骤

  • 自定义一个Filter
  • 构建一个FilterRegistrationBean,并且将构建的Filter设置到构建的FilterRegistrationBean中
  • 最后将构建的FilterRegistrationBean注入到spring中

总结

这个加密解密的过程就是自定义一个Filter拦截器,实现对路径的拦截,只不过之前使用的是web.xml来配置自定义拦截器,在springboot使用FilterRegistrationBean来注入Filter而已

你可能感兴趣的:(Spring注解学习)