为啥在 Maven 中添加依赖项会触发功能?

Posted

技术标签:

【中文标题】为啥在 Maven 中添加依赖项会触发功能?【英文标题】:Why does the addition of a dependency in Maven trigger functionality?为什么在 Maven 中添加依赖项会触发功能? 【发布时间】:2020-07-01 19:22:06 【问题描述】:

我有一个简单的问题:我刚刚开始使用 Open API 3。为此,我在 Maven 中添加了以下依赖项。

  <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.2.30</version>
    </dependency>

添加此依赖项后,我是否可以通过 localhost:8082/v3/api-docs 访问服务而无需事先设置任何内容并调用依赖项的函数?这怎么可能发生?这背后的概念是什么?

【问题讨论】:

【参考方案1】:

在您的 Maven pom.xml 中添加 OpenAPI 依赖项只是将库添加到您的项目中。就是这样。

如果这是一个“传统”项目(例如 JSP Web 应用程序),您必须编写代码来创建 Web 服务(例如“localhost:8082/v3/api-docs”)。

但听起来你的项目可能是 Spring Boot:

https://developer.ibm.com/technologies/java/tutorials/j-spring-boot-basics-perry/

如果你允许它,Spring Boot 将使用它的 @EnableAutoConfiguration 注释以自动配置您的应用程序。 自动配置基于类路径中的 JARS 以及如何 你已经定义了你的 bean:

Spring Boot 使用您指定出现在 CLASSPATH 中的 JAR 来形成关于如何配置某些自动 行为。例如,如果您的文件中有 H2 数据库 JAR classpath 并且没有配置其他 DataSource bean,那么您的 应用程序将自动配置一个内存 数据库。

Spring Boot 使用您定义 bean 的方式来确定如何自动配置自身。例如,如果您注释您的 JPA 带有@Entity的bean,那么Spring Boot会自动配置JPA 这样您就不需要 persistence.xml 文件。

【讨论】:

是的,我正在使用 Spring Boot。谢谢你的回答。【参考方案2】:

这被称为约定优于配置。 维基链接https://en.wikipedia.org/wiki/Convention_over_configuration

【讨论】:

以上是关于为啥在 Maven 中添加依赖项会触发功能?的主要内容,如果未能解决你的问题,请参考以下文章

添加 Firestore 依赖项会导致 Flutter 应用程序出错

添加xuggler依赖项会产生错误

为啥不能使用pom文件中的maven依赖?

为啥我必须从我的 pom 中删除一个依赖项,然后再将其添加回来并安装以获取最新版本的 maven 包?

为啥有时会跳过 maven 依赖项中的版本号?

无法让 Maven 从代理后面的 HTTPS URL 下载