You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成MapStruct报错:找不到UserMapper类型Bean

问题描述

我是Spring Boot新手,遇到了Bean找不到的问题。

相关代码

UserService

@RequiredArgsConstructor 
@Service
public class UserService {
    
    private final UserRepository userRepository;

    private final UserMapper userMapper;

    public UserDto login(CredentialDto credentialDto) {
        User user = userRepository.findBylogin(credentialDto.login())
            .orElseThrow(() -> {
            ApplicationException ex = new ApplicationException();
            ex.setMessage("Unknown user");
            return ex;
        });
        return userMapper.toUserDto(user);
    }
}

UserMapper

@Mapper(componentModel = "spring")
public interface UserMapper {
    UserDto toUserDto(User user);
}

报错信息

描述:
Parameter 1 of constructor in com.example.jwttest.service.UserService required a bean of type 'com.example.jwttest.mappers.UserMapper' that could not be found.

操作建议:
Consider defining a bean of type 'com.example.jwttest.mappers.UserMapper' in your configuration.


解决方案
  • 检查MapStruct依赖是否完整引入
    确保项目构建文件(Maven的pom.xml或Gradle的build.gradle)包含MapStruct核心依赖和注解处理器。以Maven为例:

    <dependencies>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>1.5.5.Final</version> <!-- 使用最新稳定版 -->
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>17</source> <!-- 匹配你的JDK版本 -->
                    <target>17</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.5.5.Final</version>
                        </path>
                        <!-- 如果使用Lombok,需添加以下依赖 -->
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.18.30</version>
                        </path>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok-mapstruct-binding</artifactId>
                            <version>0.2.0</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  • 确保Spring能扫描到Mapper接口
    如果UserMapper所在包不在Spring Boot启动类的同级或子包下,需要在启动类添加@MapperScan指定Mapper包路径:

    @SpringBootApplication
    @MapperScan("com.example.jwttest.mappers") // 替换为你的Mapper实际包路径
    public class JwtTestApplication {
        public static void main(String[] args) {
            SpringApplication.run(JwtTestApplication.class, args);
        }
    }
    
  • 重新编译项目
    MapStruct是编译时生成代理类,修改依赖或配置后执行mvn clean compile(Maven)或gradle clean build(Gradle),确保生成了UserMapperImpl实现类。

  • 验证Mapper注解正确性
    确认@Mapper注解来自org.mapstruct.Mapper包,避免引用其他同名注解。

内容的提问来源于stack exchange,提问作者Ali Raza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:22:46