Spring-boot-starter-parent Example

本博客是春季启动教程,介绍了spring-boot-starter-parent依赖关系,它是父POM,为Spring Boot应用提供依赖和插件管理,包含Java、依赖项及Maven插件的默认配置。还说明了该依赖继承自spring-boot-dependencies,以及如何在项目的pom.xml文件中覆盖默认依赖版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这个春季启动教程中,我们将了解 spring-boot-starter-parent 依赖关系,它由所有 Spring启动依赖项在内部使用。我们还将了解此依赖项提供的所有配置以及如何覆盖它们。

What is spring-boot-starter-parent dependency?

spring-boot-starter-parent依赖项是父POM,它为基于Spring Boot的应用程序提供依赖性和插件管理。它包含要使用的Java的默认版本,Spring Boot使用的依赖项的默认版本以及Maven插件的默认配置。

此文件提供的几个重要配置如下。请参阅此链接以阅读完整配置。

<?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-dependencies</artifactId>
        <version>${revision}</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <packaging>pom</packaging>
    <name>Spring Boot Starter Parent</name>
    <description>Parent pom providing dependency and plugin management for applications
        built with Maven</description>
    <properties>
        <java.version>1.8</java.version>
        <resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>
     
    ...
 
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>**/application*.yml</include>
            <include>**/application*.yaml</include>
            <include>**/application*.properties</include>
        </includes>
    </resource>
 
</project>

spring-boot-starter-parent依赖项继承自spring-boot-dependencies,它在上面的POM文件的顶部定义。

此文件是实际文件,其中包含用于所有库的默认版本的信息。以下代码显示了在spring-boot-dependencies中配置的各种依赖项的不同版本:

<properties>
    <!-- Dependency versions -->
    <activemq.version>5.15.3</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.63</appengine-sdk.version>
    <artemis.version>2.4.0</artemis.version>
    <aspectj.version>1.8.13</aspectj.version>
    <assertj.version>3.9.1</assertj.version>
    <atomikos.version>4.0.6</atomikos.version>
    <bitronix.version>2.1.4</bitronix.version>
    <byte-buddy.version>1.7.11</byte-buddy.version>
    <caffeine.version>2.6.2</caffeine.version>
    <cassandra-driver.version>3.4.0</cassandra-driver.version>
    <classmate.version>1.3.4</classmate.version>
 
    ...
    ...
</properties>

上面的列表很长,您可以在此链接中阅读完整列表。

如何覆盖默认依赖版本?

如您所见,spring boot具有用于大多数依赖项的默认版本。您可以在项目的pom.xml文件的properties标记中覆盖您选择或项目需要的版本。

例如Spring boot使用google GSON库的默认版本为2.8.2。

<groovy.version>2.4.14</groovy.version>
<gson.version>2.8.2</gson.version>
<h2.version>1.4.197</h2.version>

我想使用2.7的gson依赖。所以我会在属性标签中提供这些信息。

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <gson.version>2.7</gson.version>
</properties>

现在在您的eclipse编辑器中,您可以看到以下消息:托管版本为2.7该工件在org.springframework.boot中管理:spring-boot-dependencies:2.0.0.RELEASE。

tips

### 解决方案 在使用 `mybatis-spring-boot-starter` 时,报错问题通常与依赖版本不匹配或配置错误有关。以下是一些可能的解决方案: #### 1. 检查 Spring Boot 和 MyBatis 版本兼容性 确保 `spring-boot-starter-parent` 和 `mybatis-spring-boot-starter` 的版本兼容。例如,在引用中提到,当 `spring-boot-starter-parent` 的版本为 `3.4.3` 时,`mybatis-spring-boot-starter` 的版本需要升级到 `3.0.3`[^2]。如果版本不匹配,可能会导致类似 `Invalid bean definition with name 'userMapper'` 的错误。 #### 2. 配置文件检查 确认 `application.properties` 或 `application.yml` 文件中的 MyBatis 配置是否正确。例如,确保以下配置项存在并正确设置: ```properties mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.domain ``` 上述配置指定了 Mapper 文件的位置和实体类的包路径。如果这些路径不正确,可能导致 Bean 定义无效的问题。 #### 3. 排查冲突依赖 如果项目中同时引入了 `mybatis-spring-boot-starter` 和其他类似的依赖(如 `mybatis-plus-spring-boot-starter`),可能会导致冲突。例如,引用中提到两者可能存在冲突[^1]。解决方法是明确排除不需要的依赖,或者调整依赖的加载顺序。 #### 4. 使用正确的 Mapper 注解 确保所有的 Mapper 接口都正确使用了 `@Mapper` 注解,并且在 Spring Boot 启动类上添加了 `@MapperScan` 注解。例如: ```java @Mapper public interface UserMapper { // 方法定义 } ``` ```java @SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 5. 检查 Bean 定义类型 根据引用内容,错误信息显示 `Invalid value type for attribute 'factoryBeanObjectType': java.lang.String`[^2]。这表明 MyBatis 在解析 Mapper 时,可能将 Bean 类型错误地识别为 `String`。可以通过以下方式排查: - 确保 Mapper 接口的方法签名与 XML 文件中的 SQL 定义一致。 - 检查 XML 文件路径是否正确,并确保其能够被正确加载。 #### 示例代码 以下是一个完整的 Maven 配置示例,展示了如何正确引入依赖并配置版本: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.3</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> </dependencies> ``` ### 注意事项 - 如果问题仍然存在,可以尝试清理项目缓存并重新构建: ```bash mvn clean install ``` - 确保 IDE 的自动导入功能未引入多余的依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值