在 Spring Boot 中使用 WebJars

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

欢迎来到2014年!2013年对Spring来说是激动人心的一年,我们期待着又一个伟大的年份。我们在最近的一些帖子中重点关注了客户端开发,包括我们发布了一些新的客户端入门指南。在之前的帖子中,我还回顾了使用Spring Boot提供静态 Web 内容是多么容易提供静态 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 归档)文件格式,该格式用于将许多类文件及其关联的元数据打包到单个文件中。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 社区中所有即将举行的活动。

查看全部