在 Spring Boot 中使用 WebJars

工程 | Roy Clarkson | 2014 年 1 月 3 日 | ...

欢迎来到 2014 年! 2013 年是 Spring 激动人心的一年,我们期待又一个精彩的一年。 我们最近的帖子主要关注客户端开发,包括我们发布了一些新的 客户端入门指南。 在之前的帖子中,我还回顾了使用 Spring Boot 提供静态 Web 内容 是多么容易。

在这篇文章中,我将继续讨论使用 Spring Boot 进行客户端开发,因为我们将探索另一个内置功能。 我之前的帖子包含了 WebMvcAutoConfiguration源代码 中的以下摘录,该摘录说明了在使用 Spring Boot 时如何将静态资源自动添加到 Spring MVC ResourceHandlerRegistry

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (!registry.hasMappingForPattern("/webjars/**")) {
        registry.addResourceHandler("/webjars/**").addResourceLocations(
                "classpath:/META-INF/resources/webjars/");
    }
    if (!registry.hasMappingForPattern("/**")) {
        registry.addResourceHandler("/**").addResourceLocations(
                RESOURCE_LOCATIONS);
    }
}

我上次的帖子中没有讨论的方面是“webjars”资源处理程序。 你可能在想,“这很好,但是什么是 webjars?”。

作为一名 Java 开发人员,您可能熟悉 JAR(Java Archive)文件格式,该格式用于将许多类文件及其关联的元数据打包到单个文件中。 WebJars 只是将 JAR 的概念应用于客户端库或资源。 例如,jQuery 库可以打包为 JAR,并提供给您的 Spring MVC 应用程序使用。 使用 WebJars 有几个好处,包括支持 Java 构建工具,如 Gradle 和 Maven。 并且通过在构建工具中使用依赖管理,会自动为您处理传递依赖项。

也许您想向您的网页添加一个 jQuery 动画。 使用 使用 Spring MVC 提供 Web 内容 指南作为起点,修改 build.gradle 文件以包含 jQuery 依赖项。 许多 WebJars 可通过 Maven Central 获得,GroupID 为 org.webjars。 完整的列表可以在 webjars.org 上找到。

buildscript {
    repositories {
        maven { url "http://repo.spring.io/libs-milestone" }
        mavenLocal()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:0.5.0.M6")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'

jar {
    baseName = 'gs-serving-web-content'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
    maven { url "http://repo.spring.io/libs-milestone" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:0.5.0.M6")
    compile("org.thymeleaf:thymeleaf-spring3:2.0.17")
    compile("org.webjars:jquery:2.0.3-1")
    testCompile("junit:junit:4.11")
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.8'
}

添加依赖项后,您可以在 HTML 中引用 jQuery WebJar,并利用它来动画段落标记中的文本。 请注意 jQuery 依赖项的位置!

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head> 
    <title>Getting Started: Serving Web Content</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script src="webjars/jquery/2.0.3/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('p').animate({
                fontSize: '48px'
            }, "slow");
        });
    </script>
</head>
<body>
    <p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>

JavaScript 包管理不是一个新概念。 实际上,npmbower 是两个更流行的工具,目前提供了管理 JavaScript 依赖项的解决方案。 Spring 的 了解 JavaScript 包管理器 指南提供了更多信息。 大多数 JavaScript 开发人员可能熟悉 npm 和 bower 并在他们的项目中使用它们。 相比之下,WebJars 利用 Maven 的依赖管理模型将 JavaScript 库包含在项目中,使其更容易被 Java 开发人员访问。

Spring Boot 提供了一种简单的方法来构建需要很少或不需要配置的 Spring 应用程序。 这篇文章说明了在您的 Spring MVC 应用程序中使用 WebJars 是多么简单,以及 WebJars 如何提供一种管理 JavaScript 包和依赖项的便捷方式。 更多信息请参阅 Spring Boot 项目页面入门指南 目录。

获取 Spring 新闻资讯

通过 Spring 新闻资讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部