报错如下:

2026-05-13T10:43:03.817+08:00  WARN 13404 --- [mini-user] [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'miniUserController' defined in file [D:\MyProject\security-damo\mini-user\target\classes\com\cyp\user\controller\MiniUserController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'miniUserServiceImpl' defined in file [D:\MyProject\security-damo\mini-user\target\classes\com\cyp\user\service\impl\MiniUserServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'com.cyp.user.service.converter.MiniUserConverter' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2026-05-13T10:43:03.817+08:00  INFO 13404 --- [mini-user] [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
2026-05-13T10:43:03.828+08:00  INFO 13404 --- [mini-user] [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
2026-05-13T10:43:03.830+08:00  INFO 13404 --- [mini-user] [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2026-05-13T10:43:03.864+08:00 ERROR 13404 --- [mini-user] [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 1 of constructor in com.cyp.user.service.impl.MiniUserServiceImpl required a bean of type 'com.cyp.user.service.converter.MiniUserConverter' that could not be found.


Action:

Consider defining a bean of type 'com.cyp.user.service.converter.MiniUserConverter' in your configuration.


注意每次排查需要进行maven clean compile的清除、编译

开始排查:
一:查看MapStruct 到底有没有生成实现类
找到项目编译输出目录(通常是 target/)

在这里插入图片描述
如果没有,在pom.xml添加插件

<build>
        <plugins>
            <!-- 将生成的源码目录添加为源码根 -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.4.0</version>
                <executions>
                    <execution>
                        <id>add-generated-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${project.build.directory}/generated-sources/annotations</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>17</source>               <!-- 根据你项目的 Java 版本调整 -->
                    <target>17</target>
                    <annotationProcessorPaths>
                        <!-- MapStruct 定义库 -->
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct</artifactId>
                            <version>${mapstruct.version}</version>
                        </path>
                        <!-- Lombok 处理器(必须在前) -->
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <!-- MapStruct 处理器(必须在 Lombok 之后) -->
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${mapstruct.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
    </build>

二:追踪 Spring 扫描
在启动类添加Converter打印信息,如果打印结果为空,则必然有某种排除机制

public static void main(String[] args) {
    ConfigurableApplicationContext context = SpringApplication.run(MiniUserApplication.class, args);
    System.out.println("==== Beans of type MiniUserConverter ====");
    String[] names = context.getBeanNamesForType(MiniUserConverter.class);
    for (String name : names) {
        System.out.println(name);
    }
    System.out.println("==== All beans containing 'Converter' ====");
    for (String name : context.getBeanDefinitionNames()) {
        if (name.toLowerCase().contains("converter")) {
            System.out.println(name + " -> " + context.getBean(name).getClass().getName());
        }
    }
}

经过详细排查,发现以下都没问题:

  1. 生成的文件正常:
    源文件:mini-user/target/generated-sources/annotations/com/cyp/user/service/converter/MiniUserConverterImpl.java
    class 文件:mini-user/target/classes/com/cyp/user/service/converter/MiniUserConverterImpl.class
  2. Maven 构建配置正确:
    pom.xml 中正确配置了 MapStruct 处理器
    build-helper-maven-plugin 正确添加了生成源码目录
    annotationProcessorPaths 正确配置了 Lombok 和 MapStruct 的顺序
  3. MapStruct 配置正确:
    MiniUserConverter 接口使用了 @Mapper(componentModel = “spring”)
    生成的 MiniUserConverterImpl 类包含了 @Component 注解
    编译和打包都成功完成

根本原因:
可能IDEA环境配置问题_,而不是代码或配置问题。原因如下:

  • Maven命令行编译打包都成功
  • 生成的class文件存在于正确的位置
  • IDEA可能没有正确识别target/generated-sources/annotations作为源代码目录
  • IDEA的缓存可能导致它看不到新生成的类

解决方案:

  • 清理IDEA缓存(推荐这个方案,本人是通过这个解决的)
  1. 在IDEA中:File -> Invalidate Caches(使缓存失效)
  2. 选择 “Invalidate and Restart” (失效并重启 R)
  3. 等待IDEA重新索引项目
  4. maven clean compile
  5. 重新运行应用
  • 重新导入Maven项目
  1. 关闭IDEA中的项目
  2. 删除 .idea 目录(如果需要)
  3. 在IDEA中重新打开项目
  4. Maven工具栏 -> Reload project
  • 手动标记源代码目录
  1. 打开 Project Structure (Ctrl+Alt+Shift+S)
  2. 选择 Modules -> mini-user
  3. 找到 target/generated-sources/annotations
  4. 右键 -> Mark as -> Sources
  5. 点击OK应用

更多推荐