在 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 有几个好处,包括支持 Gradle 和 Maven 等 Java 构建工具。通过使用构建工具中的依赖管理,传递性依赖会自动为你处理。

也许你想在你的网页中添加一个 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 社区所有即将举行的活动。

查看所有