Springboot3整合使用ja-captcha行为验证码解决方案

这篇具有很好参考价值的文章主要介绍了Springboot3整合使用ja-captcha行为验证码解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

截止到目前(2023-04-20),Springboot最新稳定版本已经迭代到3.0.5,而我们项目中使用的行为验证码框架aj-captcha还没有适配Springboot3,码云上类似的请求也没有得到过回应,于是决定自己动手适配一下,研究下来发现适配3.x并没有那么难,这里记录一下适配过程,希望能帮到他人

Springboot3整合使用ja-captcha行为验证码解决方案

首先搭建一个Springboot2的项目,以最简单的方法整合验证码,这里我选择使用springboot2.7.5aj-captcha1.3.0,在Maven中添加依赖后直接启动项目即可

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
    </parent>
    <groupId>site.hanzhe.boot3.captcha</groupId>
    <artifactId>springboot3-aj-captcha</artifactId>
    <version>0.0.1</version>
    <description>Springboot3整合aj-captcha行为验证码解决方案</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.anji-plus</groupId>
            <artifactId>spring-boot-starter-captcha</artifactId>
            <version>1.3.0</version>
        </dependency>
    </dependencies>

</project>

Springboot3整合使用ja-captcha行为验证码解决方案

可以看到已经整合成功了,而且调用接口测试也一切正常,现在将Springboot版本改成3.0.5,然后刷新Maven后重启一下项目试试看,发现控制台已经不打印aj-captcha的日志了,而且接口也返回404

Springboot3整合使用ja-captcha行为验证码解决方案

在整合之前,我们需要了解一下Springboot3.x的两个重要的变化

第一个变化是Springboot3以JakartaEE 9为基准并支持JakartaEE 10,其实Jakarta就是Java,Oracle将JavaEE移交给了Eclipse基金会,并不允许其使用原本的java名称,所以Java改名为Jakarta,原javax包名也修改为了jakarta

第二个变化是Springboot自动配置文件的变更,Springboot3废弃了factories的自动配置,改为使用imports文件

了解这两点后我们回到整合验证码的项目中,首先可以观察到最明显的一点,启动项目后控制台不在打印aj-captcha的日志了,这就代表自动配置并没有生效,在外部库中找到aj-captcha的自动配置,发现它是使用factories进行自动配置的,该方法已经失效,我们需要创建新的自动配置文件来启用它

在resource目录下新建META-INF/spring两个目录,在目录下添加自动配置文件,并将aj-captcha的自动配置类添加进去然后重启项目查看效果,文件名太长我就放在代码块中了

# 文件名
org.springframework.boot.autoconfigure.AutoConfiguration.imports

# 文件内容
com.anji.captcha.config.AjCaptchaAutoConfiguration

Springboot3整合使用ja-captcha行为验证码解决方案

可以看到项目启动报错了,不过不用担心,报错是好事儿,说明自动配置生效了,提取报错中的主要信息,是创建captchaController这个Bean的时候报错了,报错的原因是没有找到javax/servlet/http/HttpServletRequest这个类,因为Springboot3中javax的包名统一修改为了jakarta,所以这个类会找不到

这里直接使用替换法简单粗暴的解决这个问题,找到报错的这个类,在项目中创建一个相同包名的的类,将里面的javax替换为jakarta,这样在创建Bean的时候Java找到的类是我们自己的jakarta的类,就不会调用旧的javax的类了

Springboot3整合使用ja-captcha行为验证码解决方案

替换后重启项目查看效果,可以发现项目启动成功,并且控制台打印了aj-captcha的启动日志,调试接口也成功了,整合完成,点击查看代码

本文使用笨方法在Springboot3中使用aj-captcha,还是希望作者早日做适配文章来源地址https://www.toymoban.com/news/detail-419447.html

到了这里,关于Springboot3整合使用ja-captcha行为验证码解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot3 整合 Mybatis3

    mybatis 的必要依赖 注意:使用 springboot3 的话要使用 mybatis3 的版本以及 java17及以上的版本 注意: 如果接口上面有 注解 @Mapper 的话,就可以不用在使用扫描包注解 @MapperScan 了(当然两个可以同时存在) 注意: 最好要加上 @Mapper注解,防止忘记开启扫描 注意:头文件这里的网

    2024年01月25日
    浏览(44)
  • Java --- springboot3整合SSM

    目录 一、整合SSM场景 二、自动配置原理   引入pom依赖 数据库表: 配置数据源 配置mybatis相关配置 实体类: mapper接口: mapper接口映射文件: service实现类: controller层: 在springboot启动类添加注解: jdbc场景的自动配置 :   1、 mybatis-spring-boot-starter 导入 spring-boot-starter-jd

    2024年02月08日
    浏览(54)
  • SpringBoot3 整合Prometheus + Grafana

    通过Prometheus + Grafana对线上应用进行观测、监控、预警… 健康状况【组件状态、存活状态】Health 运行指标【cpu、内存、垃圾回收、吞吐量、响应成功率…】Metrics … 1. 基本使用 1. 场景引入 2. 暴露指标 3. 访问数据 访问 http://localhost:8080/actuator;展示出所有可以用的监控端点

    2024年02月14日
    浏览(32)
  • SpringBoot整合Mybatis-Plus(SpringBoot3)

    依赖pom.xml: pom.xml resource包下的Application.yml: Aollication.yml pojo包下的实体类User: User mapper包下的接口UserMapper: UserMapper 主启动类DemoPlusApplication DemoPlusApplication 测试类DemoApplicationTest: DemoApplicationTest 实现结果 检测数据库连接: C(Create): D(Delete): U(Update) R(Read)

    2024年03月20日
    浏览(45)
  • SpringBoot3 整合 ElasticSearch7 示例

    做仿牛客项目需要使用 es 做搜索,但是老师示例的是 SpringBoot2 + es6 去做的,然而我用的是 Spring3 + es7.17.10,于是踩了很多的坑。 在 es7 中,配置文件和查询所需的实现类都做了很大的改动,我以能成功运行的代码为例,大概说一下怎么配置和使用。 首先 yml 配置文件发生了变

    2024年02月07日
    浏览(46)
  • springboot3.2 整合 mybatis-plus

    springboot3.2 正式发布了 迫不及待地的感受了一下 结果在整个mybatis-plus 的时候遇到了如下报错 主要是由于 mybatis-plus 中 mybatis 的整合包版本不够导致的 排除 mybatis-plus 中自带的 mybatis 整合包,单独引入即可 修改依赖后正常

    2024年02月04日
    浏览(40)
  • SpringBoot3整合OpenAPI3(Swagger3)

    swagger2 更新到3后,再使用方法上发生了很大的变化,名称也变为 OpenAPI3 。 官方文档 openapi3 使用十分方便,做到这里后,你可以直接通过以下网址访问 swagger 页面。 1. @OpenAPIDefinition + @Info 用于定义整个 API 的信息,通常放在主应用类上。可以包括 API 的标题、描述、版本等信

    2024年01月22日
    浏览(45)
  • SpringBoot3整合SpringSecurity,实现自定义接口权限过滤

    接口权限过滤是指对于某些接口或功能,系统通过设定一定的权限规则,只允许经过身份认证且拥有相应权限的用户或应用程序进行访问和操作 。这种技术可以有效地保护系统资源和数据安全,防止未授权的用户或程序进行恶意操作或非法访问。通常情况下,接口权限过滤需

    2024年02月08日
    浏览(41)
  • 解决SpringBoot3整合Druid的兼容性问题

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 截止目前,Druid对于SpringBoot3的支持不够全面和友好;存在一些兼容性的问题,导致项目报错。 在此,针对该问题提供可行的解决方案;以供各位参考。 请您使用以下依赖: 图示如下: 请勿使用以下依赖: 请

    2024年02月03日
    浏览(35)
  • Springboot3.0整合swagger,废弃Springfox改用Springdoc

    Automated JSON API documentation for API\\\'s built with Spring 官网地址:springfox.io springdoc-openapi java library helps to automate the generation of API documentation using spring boot projects. 官网地址:https://springdoc.org/v2/ 注意 :使用的是V2版本,这个版本支持springboot3.0 之前springboot3.0之前我用的都是Springfox来集

    2023年04月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包