转载

Spring Boot学习教程(二):认识和使用起步依赖

此文章为作者原创,转载请注明出处。

概述

在传统的软件开发过程中,随着项目库数量及其依赖关系的指数增长,依赖管理开始成为一件麻烦的事情,对于任何大型复杂的软件应用而言更是如此。为了解决这个问题,软件项目管理和理解工具(Software project management and comprehension tool)应运而生。我们所熟知的,如Python中的pip,PHP中的Composer,Java中的Maven、Gradle等,这些工具的出现使得应用程序的开发效率大大提高。以Maven为例,开发者可以使用Maven工具在Apache官方维护的中央仓库 https://search.maven.org/ 或其他第三方知名Maven仓库如 https://mvnrepository.com/ 上面方便地查询和获取依赖,相比传统的手动添加方式,依赖管理变得更方便了。但这还不足以解决所有依赖管理的痛点,如重复加载、版本不兼容或冲突等依赖管理问题依然存在。

认识起步依赖

起步依赖就是为了避免上面提到的问题出现在Spring Boot应用开发中而准备的。Spring Boot官方专门封装和维护了一套起步依赖描述符,你可以在应用程序中包含这些描述符,从而获得你所需要的所有Spring相关技术的一站式服务,而无需担心依赖会出现重复加载或版本冲突等问题。官方提供的起步依赖描述符遵循类似于spring-boot-starter- 的命名模式, 是指特定类型的应用程序。如spring-boot-starter-data-jpa根据jpa就可以知道是用于数据的持久化(Java Persistence API),它包含了下面的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starters</artifactId>
        <version>${revision}</version>
    </parent>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <name>Spring Boot Data JPA Starter</name>
    <description>Starter for using Spring Data JPA with Hibernate</description>
    <properties>
        <main.basedir>${basedir}/../../..</main.basedir>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>javax.transaction-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.jboss.spec.javax.transaction</groupId>
                    <artifactId>jboss-transaction-api_1.2_spec</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjrt</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
    </dependencies>
</project>

第三方也可以创建和开发自己的起步依赖,但不能以spring-boot开头,因为它是为Spring Boot官方保留的。Spring Boot官方提供了超过30多个的起步依赖,下面是官方起步依赖的列表

Spring Boot学习教程(二):认识和使用起步依赖

使用起步依赖

spring-boot-starter-parent是一个特殊的起步依赖,也是整个Spring Boot应用的父级依赖,它提供有用的Maven默认值,要在其他依赖引入之前引入。指定了spring-boot-starter-parent的版本号,后面引入的其他起步依赖的版本号就可以省略。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>

    <!-- Additional lines to be added here... -->

</project>

父类起步依赖确定后,其他的起步依赖按需引入即可。下面是引入spring-boot-starter-web起步依赖的示例

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

这一节的代码可在 https://github.com/HuasLeung/spring-boot-tutorial 下载,本系列的教程已经同步到我的个人网站 https://www.huasleung.com , 有任何疑问或问题也欢迎到我的博客下提问和讨论。

原文  https://segmentfault.com/a/1190000018361526
正文到此结束
Loading...