直接跳到内容

快速上手

技术交流QQ群:3549030

创建一个Maven后端项目

前提条件

  • 熟悉maven项目开发
  • 已安装 Jdk8 JDK
  • 已安装 3.9+ Maven
  • 方式一 命令方式创建
mvn org.apache.maven.plugins:maven-archetype-plugin:3.2.1:creat 
-DgroupId=com.kungfu.demo 
-DartifactId=demo 
-DpackageName=com.kungfu.demo
  • 方式二 idea开发工具进行创建

  • 方式三 其他开发工具创建,如eclipse

引入Maven依赖

xml
      <dependency>
        <groupId>io.github.ticktack</groupId>
        <artifactId>kungfu</artifactId>
        <version>1.2.0</version>
      </dependency>

在这里查看最新依赖版本 Kungfu Latest Maven Repository

包括常规的JFinal相关包的引入:

xml
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
            <version>${jfinal-version}</version>
        </dependency>

        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal-undertow</artifactId>
            <version>${jfinal-undertow-version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson-version}</version>
        </dependency>

        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>${java-jwt-version}</version>
        </dependency>

        <dependency>
            <groupId>com.lastB7</groupId>
            <artifactId>jfinal-swagger-knife4j</artifactId>
            <version>${jfinal-swagger-knife4j-version}</version>
        </dependency>

项目重点配置

在JFinal常规配置的基础上,这里仅介绍重点配置,内嵌容器undertow配置和在线接口文档Swagger配置,采用的是jfinal-swagger-knife4j

内嵌容器undertow配置

解决引用外部依赖热加载问题。如Swagger、Kungfu的引入。

xml
# 配置 undertow

undertow.devMode=true
undertow.host=0.0.0.0
undertow.port=9000

# 注意:此处为热加载类前缀配置,多个用英文逗号隔开
undertow.hotSwapClassPrefix=com.lastb7.swagger.,org.kungfu.

热加载类异常分析

如果两个类路径与类名完全一样的两个类出现类型转换异常(java.lang.ClassCastException),或者子类对象无法赋值给基类变量,可以通过配置 hotSwapClassPrefix 来解决。

再补充几个也属于这个问题的异常:java.lang.VerifyError: Bad type on operand stack 以及 java.lang.IncompatibleClassChangeError

假定出现转换异常的类为: "com.demo.UserService",可以通过热加载类前缀配置解决,如下:

xml
undertow.hotSwapClassPrefix=com.demo.

原因是 jfinal undertow 默认只对 target/classes 以及 jfinal 自身进行热加载。所以当你的类文件在 jar 包并且需要被热加载的时候就需要通过上面的办法添加为被热加载。

一般情况下你项目中 target/classes 下的类文件正好才是需要被热加载的类,所以不会有问题。这个配置仅用于开发环境,部署环境没有热加载机制,所以完全没有影响。

应用接口Swagger配置

提供在线API文档,主要解决前后端对接效率问题。

  • 配置路由
java
    @Override
    public void configRoute(Routes me) {

        // swagger路由
        me.add(new SwaggerRoutes());
    }
  • 配置插件
java
    @Override
    public void configPlugin(Plugins me) {

        // swagger插件
        me.add(new SwaggerPlugin());
    }
  • 配置处理器
java
    @Override
    public void configHandler(Handlers me) {

        // swagger处理
        me.add(new SwaggerHandler());
    }

其他常规配置,不再赘述。

快速上手已经加载完毕