Code: Select all
@Mapper(componentModel = "spring")
, aber die Bean kann immer noch nicht gefunden werden. Die Schnittstelle ist im Quellcode vorhanden, erscheint erfolgreich, scheint aber für den Frühlingskontext zur Laufzeit nicht verfügbar zu sein. />Environment
[*]Spring Boot: 3.5.4
[*]MapStruct: 1.5.5.Final
[*]Java: 21
[*]Maven: 3.x Build
[*]Editor: VS Code
< /ul>
Fehlerdetails < /strong> < /p>
Code: Select all
Caused by: java.lang.ClassNotFoundException: AccountMapper
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528)
< /code>
Description:
Field accountMapper in com.demo.demo.service.AccountService required a bean of type 'com.demo.demo.mapper.AccountMapper' that could not be found.
Action:
Consider defining a bean of type 'com.demo.demo.mapper.AccountMapper' in your configuration.
2025-08-16T13:57:58.031-05:00 WARN 60525 --- [finance-core-service] [ main] o.s.test.context.TestContextManager : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener] to prepare test instance [com.demo.demo.FinanceCoreServiceApplicationTests@7f72855d]
< /code>
Class, Interfaces and POM[/b]
MapStruc
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingConstants;
import com.demo.finance_core_service.dto.AccountBaseDTO;
import com.demo.finance_core_service.model.Account;
// Also tried: @Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
@Mapper(componentModel = "spring")
public interface AccountMapper {
@Mapping(target = "accountId", ignore = true)
@Mapping(target = "transactions", ignore = true)
Account toEntity(AccountBaseDTO dto);
AccountBaseDTO toDto(Account entity);
}
< /code>
Generated Mapper Implementation
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2025-08-16T13:52:56-0500",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 23.0.1"
)
@Component
public class AccountMapperImpl implements AccountMapper {
// Implementation code...
}
< /code>
Service
@Service
public class AccountService {
@Autowired
private AccountRepository accountRepository;
@Autowired
private AccountMapper accountMapper; // Bean not found
@Transactional
public Account createAccount(AccountBaseDTO newAccount) {
Account account = accountMapper.toEntity(newAccount);
return accountRepository.save(account);
}
}
< /code>
Pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.5.4
com.demo
finance-core-service
0.0.1-SNAPSHOT
demo
demo
21
1.5.5.Final
1.18.38
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-webflux
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-validation
com.h2database
h2
runtime
org.postgresql
postgresql
runtime
org.springdoc
springdoc-openapi-starter-webmvc-ui
2.5.0
org.projectlombok
lombok
${lombok.version}
provided
org.mapstruct
mapstruct
${mapstruct.version}
org.springframework.boot
spring-boot-starter-test
test
org.apache.maven.plugins
maven-compiler-plugin
org.projectlombok
lombok
${lombok.version}
org.projectlombok
lombok-mapstruct-binding
0.2.0
org.mapstruct
mapstruct-processor
${mapstruct.version}
-Amapstruct.defaultComponentModel=spring
org.springframework.boot
spring-boot-maven-plugin
< /code>
I also tried to manually register the mapper as a @Bean. But it did not fix the issue.
@Configuration
public class MapperConfig {
@Bean
public AccountMapper accountMapper() {
return new AccountMapperImpl();
}
}