是否可以将spring mvc项目作为Jar依赖项?

时间:2015-11-23 05:51:58

标签: java spring spring-mvc

我们正在使用Spring MVC来构建我们的应用程序,我们尝试使用ajax与服务器进行通信,我们只通过apache tiles渲染基本页面。

还有一些模块,例如:

app-data将负责一些数据上传,处理和持久化。并且网址映射可能如下所示:

restful-like service:
    /api/data/excel (post,get,delete)
    /api/data/pdf (post,get,delete)

pages:
/data (home page for the data module, return a rendered html page)

app-user将负责用户管理,网址映射:

restful-like service:
    /api/user (post,get,delete,put)

pages:
/user (home page for the user module, return a rendered html page)

app-site将负责其他网页,例如:

/about
/contact
/feedback
.....
顺便说一句,我们还有另一个原因,我们将它们分成不同的模块,其中一些模块可能在其他项目中重复使用。我们希望重复使用所有页面和休息服务。

现在这是应用程序结构:

app
    app-data
        build.gradle
        src/main
            java
            resources

    app-user
        build.gradle
        src/main
            java
            resources
    app-site
        build.gradle
        src/main
            resources

            webapp
                static
                WEB-INF
                    jsps
                        header.jsp
                        footer.jsp
                        tiles
                            data.jsp
                            user.jsp

我们预计最终的应用程序与war包捆绑在一起包含以下内容:

app
    static
    WEB-INF
        classes
            xx.properties
        lib
            app-data.jar (with resources including *.properties)
            app-user.jar (with resources including *.properties)
        jsps
            .....

而且,不同的模块可能包含* .properties的一些不同的配置,我们想要覆盖它们中的一些,例如,一旦我们有了一个新项目,我们需要user功能,我们复制app-siteapp-user,并覆盖/app-site/src/main/resources/*.properties中的属性,然后就完成了。

我想知道这是否可能?

更新

我不是试图将app-site与jar一样(认为可以使用spring boot或其他东西),app-site本身仍然是一个war项目,而它的依赖项({{ 1}}和app-data)被捆绑为罐子。

1 个答案:

答案 0 :(得分:0)

我认为您可以轻松地将控制器打包在不同的罐子中,根据我的说法在您的情况下不是问题,但是问题将与js,css和html等静态内容有关。要将它们提供给浏览器,您必须将它们标记为mvc资源。让我们假设您的jar是遵循以下结构。

src
   main
       java (all controllers)
       resources
                webcontent 
                          css
                          js
                           app.js

如上所示,静态内容位于resources / webcontent文件夹中。它可以作为mvc资源,如下所示。

<mvc:resources mapping="/resources/**" location="classpath:/webcontent/"/>

您可以在html中获取app.js,如下所示

<script type="text/javascript" src="js/app.js"></script>