ActFramework多模块开发指南是什么

这篇文章给大家介绍Act Framework多模块开发指南是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

我们拥有十多年网页设计和网站建设经验,从网站策划到网站制作,我们的网页设计师为您提供的解决方案。为企业提供网站建设、成都网站设计、微信开发、小程序开发成都做手机网站H5建站、等业务。无论您有什么样的网站设计或者设计方案要求,我们都将富于创造性的提供专业设计服务并满足您的需求。

ActFramework 是一个Java的非轻量级全栈式MVC框架。和其他框架相比ActFramework的主要特点有:

  • 强大的参数绑定。 控制器方法可以绑定任何Java类型,包括基本类型,字符串,enum,数组,集合类型,Map类型和用户自定义的POJO

  • 灵活的路由配置 - 支持注入和路由表配置

  • 符合JSR330标准的依赖注入

  • 内置CSRF,XSS防护

  • 内置CORS,支持SPA前后端分离

  • 功能完备的数据库访问层

  • 完整的RESTFul服务支持

  • 优秀的运行时性能

  • 支持不同运行环境的配置

  • 支持多种模板引擎

  • 非Servlet框架, 容易开发和部署

  • 多种插件,包括MongoDB,Excel输出,OAuth认证,认证/授权/记账等

作为一个ActFramework的忠实粉,从Act 1.0版本开始,看到Act一步一步越来越完善,更加成熟。如果你想更快速的开发RESTFul的服务,ActFramework不失为一个很好的选择。

前面格林大神已经分享了如何在ActFramework的世界迈出第一步,从无到有,搭建一个Act的工程,具体内容可以参看这里。这篇博客得到很多小伙伴的一致好评,小伙伴并不满足于初级使用,很多小伙伴通过各种方式,询问了跟多关于Act的问题,其中一部分是关于如何创建多模块的Act应用和工程。今天,这里介绍的就是如何一步一步的搭建多模块Act应用和工程。

1. 构架工程

我们首先构架一个多模块,多应用的工程,主要满足以下几方面的功能。

  1. 发布的应用应该和内部模块独立区分

  2. 应用下面可能有多个独立App

  3. 模块下面根据功能不同,可能会有多个子模块

所以,我们设计得结构大概如下所示。

project
├─applications
│  ├─genji
│  ├─hanzo
│  └─nexus
└─modules
    ├─core
    ├─data
    └─ware

applications下面是将来会发布的独立的三个应用,genji,hanzo和nexus

modules是工程的内部依赖的模块,这些模块可能会被应用全部或者个别依赖。

有了工程大概的设计模型,我们下一步开始搭建工程

2. 搭建工程

搭建工程,实现以上架构。这里用Maven做为管理工具。具体的POM可以见下面。

2.1 工程的POM



    4.0.0
    
    
        
            sonatype-nexus-snapshots
            Sonatype Nexus Snapshots
            https://oss.sonatype.org/content/repositories/snapshots
            
                false
            
            
                true
            
        
    
    
    
        
            sonatype-nexus-snapshots
            Sonatype Nexus Snapshots
            https://oss.sonatype.org/content/repositories/snapshots
            
                false
            
            
                true
            
        
    
    
    
        org.actframework
        act-starter-parent
        1.8.19.0
    
    
    me.domall
    domall
    domall :: project
    pom
    1.0.1
    
    
        applications
        modules
    
    
    
        1.0.1
        1.0.1
        1.0.1
        8.0.12
        27.0.1-jre
        1.2.3
        4.12
        2.2.0
        3.1.0
        1.8
        UTF-8
        UTF-8
    
    
    
        
            
                
                    org.apache.maven.plugins
                    maven-compiler-plugin
                    
                        ${java.version}
                        ${java.version}
                        true
                        lines,vars,source
                    
                
                
                    org.apache.maven.plugins
                    maven-resources-plugin
                    
                        true
                    
                
                
                    org.apache.maven.plugins
                    maven-assembly-plugin
                    
                        true
                    
                
                
                    org.apache.maven.plugins
                    maven-dependency-plugin
                    
                        true
                    
                
            
        
    

顶部工程比较核心的部分是申明下面会有2部分大模块applications和modules

    
        applications
        modules
    

2.2 Application工程

Applications 工程下面有三个独立的Application,这里仅以Nexus工程为例,其它类似。



    4.0.0
    
    
        domall
        me.domall
        1.0.1
    
    
    domall-applications
    pom
    domall :: applications
    
    
        hanzo
        nexus
        genji
    
    
    
        
            
                me.domall
                domall-core
                ${domall-core.version}
                compile
            
            
                me.domall
                domall-data
                ${domall-data.version}
                compile
            
            
                me.domall
                domall-ware
                ${domall-ware.version}
                compile
            
            
                org.actframework
                act
                ${act.version}
            
            
                org.actframework
                act-aaa
                ${act-aaa.version}
            
        
    

可以看到applications下面包含三个独立的应用Genji,Hanzo和Nexus

2.2.1 Nexus 工程

工程的配置POM



    4.0.0
    
    
        domall-applications
        me.domall
        1.0.1
    
    
    domall-nexus
    domall :: applications :: nexus
    
    
        me.domall.nexus.Nexus
    
    
    
        
            me.domall
            domall-core
        
        
            me.domall
            domall-data
        
        
            me.domall
            domall-ware
        
        
            org.actframework
            act
        
        
            org.actframework
            act-aaa
        
    
    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
            
        
    

2.3 Modules 工程

Modules工程和Applications工程类似,唯一不同,Module下面的模块发布出来是Jar包,只能被其它模块或者应用引用。



    4.0.0
    
    
        domall
        me.domall
        1.0.1
    
    
    domall-modules
    pom
    domall :: modules
    
    
        core
        data
        ware
    
    
    
        
            
                me.domall
                domall-core
                ${domall-core.version}
                compile
            
            
                me.domall
                domall-data
                ${domall-data.version}
                compile
            
            
                org.actframework
                act-aaa
                ${act-aaa.version}
            
            
                org.actframework
                act-morphia
                ${act-morphia.version}
            
            
                org.actframework
                act-eclipselink
                ${act-eclipselink.version}
            
            
                mysql
                mysql-connector-java
                ${mysql-connector.version}
            
            
                com.google.guava
                guava
                ${guava.version}
            
            
                org.slf4j
                slf4j-api
                ${slf4j-api.version}
            
            
                junit
                junit
                ${junit.version}
                test
            
            
                org.assertj
                assertj-core
                ${assertj.version}
                test
            
        
    

Modules下面的子模块和Applications下面的应用一致,这里不再一一列举。

3. ACT多模块支持

看完前面的内容,我们可以发现,我们在Act里面的多模块多应用的工程基本和Spring的工程是看起来一样的。的确Act支持标准的Maven构架的工程,所以Act的多模块和多应用工程是标准的Maven多模块工程。

3.1 IDEA 支持

既然是标准的Maven工程,所以我们把工程导入到Intellij IDEA,配置完对应的IDEA的配置,IDEA是完全可以识别,没有任何的问题。

既然IDEA能正确的识别Maven标准的多模块应用,那么大家的疑惑和问题在哪里呢?

大家的疑惑和问题主要是在我们启用Act Application的时候,会失败,IDEA会告诉你找不到对应的引用的模块。

这是为什么,怎么解决呢?

我们先来看看怎么解决在IDEA里面的正确的启动多模块引用的应用。

3.1.1 配置支持

为解决在IDEA下面启动和执行Act多模块的问题我们可以选择在工程的配置文件中添加配置。

因为Act是支持多环境的,一般我们默认在IDEA里面启动是DEV,所以我们需要在Dev下面的配置中添加相关的配置。

这里我们还是以Neuxs工程的配置为例:

############################################
# Act multi-modules configuration for DEV
############################################

base=../../modules
modules=${base}/core;${base}/data;${base}/ware

配置的核心就是需要配置modules属性,并指定该应用引入的模块的相对位置或者绝对位置,我们推荐使用相对位置。

3.2 运行支持

刚才我们知道如何在IDEA里面支持Act的多模块。那么我们发布出来的App应用,在PROD环境下面怎么支持呢?是不是也把Prod下面的配置文件加上配置?

首先我们看到Act默认发布的App是tar.gz的形式,tar.gz里面包含了我们的Act依赖和我们自己工程的依赖,并且在启动是,会把lib下面的资源自动加载到运行环境,所以我们不需要对Prod下面的配置文件做任何修改,Act Application在启动时会自动发现放置于lib下面的依赖的包。

注意:

  1. 我们在定制多模块应用的时候,需要在POM中指明发布格式和引用,这样我们发布出来的tar.gz才能正确的包含模块下的Jar文件。

  2. 如果我们需要修改子模块的资源文件,我们可以在POM文件中做相应的设置和修改。例如:


    org.apache.maven.plugins
    maven-resources-plugin
    
        false
        ${project.build.outputDirectory}
        
            
                ${project.parent.parent.basedir}/modules/core/src/main/resources
                false
            
            
                ${project.parent.parent.basedir}/modules/data/src/main/resources
                false
            
            
                ${project.basedir}/src/main/resources
                false
            
            
                ${project.basedir}/src/main/resources
                true
                
                    **/.version
                
            
        
    


    org.apache.maven.plugins
    maven-assembly-plugin
    
        false
    


    org.apache.maven.plugins
    maven-dependency-plugin
    
        false
    


    org.apache.maven.plugins
    maven-jar-plugin
    ${maven-jar-plugin.version}
    
        
            me/**
        
    

4. 结束语

Java工程的多模块多应用是标准的Maven工程的设置,Act的工程发布出来,在生成环境是可以完美支持的。并不需要做特殊的修改。

为了支持开发模式下找到工程源文件来编译,需要在对应的Dev的配置中申明Modules配置。记住下面这个配置,Act多模块多应用不是难题。

modules=/;/;...

这里顺便解释下为什么IDEA下面需要配置Modules参数,而Spring的工程不需要呢?这是因为Spring在IDEA下面有专门的插件,插件告诉了IDEA在哪里去找各个Spring引入的模块,但Act没有IDEA的专门插件,所以我们只能在配置中申明一下,这样开发模式就完全没有问题了。

关于Act Framework多模块开发指南是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网页题目:ActFramework多模块开发指南是什么
链接地址:http://azwzsj.com/article/ijopge.html