Mat*_*ley 6 java spring spring-boot mapstruct
我尝试自动装配我的映射结构映射器:
@Mapper(uses = {
A.class,
B.class,
C.class
})
public interface WindowDtoMapper {
WindowDtoMapper INSTANCE = Mappers.getMapper(WindowDtoMapper.class);
DetailedDto mapToDetailedDto(Window window);
ReadDto mapToReadDto(Window window);
}
Run Code Online (Sandbox Code Playgroud)
这有效:
return WindowDtoMapper.INSTANCE.mapToDetailedDto(window)
Run Code Online (Sandbox Code Playgroud)
但为什么我不能使用:
@RequiredArgsConstructor
public class AAA(){
private final WindowDtoMapper windowDtoMapper;
windowDtoMapper.mapToDetailedDto(window)
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
引起原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“pl.comp.window.application.mapper.WindowDtoMapper”类型的合格 bean:预计至少有 1 个符合自动装配候选资格的 bean。依赖注释:{} 位于 org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1717) 位于 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1273)
也许我应该继续使用第一个可行的解决方案?这是不好的解决方案吗?
默认情况下,MapStruct 生成普通的 Java 类,仅此而已。Spring 无法知道您希望这些成为 Bean。
如MapStruct 文档中所述,您可以使用@Mapper(componentModel = "spring")
MapStruct 将其放在@Component
它创建的类上(您需要确保包含映射器的包正在被组件扫描)。
归档时间: |
|
查看次数: |
9289 次 |
最近记录: |