이 소스에서 애플리케이션을 다운로드했습니다. https://github.com/springframeworkguru/spring5-mvc-rest/tree/vendor-api MapStruct에 문제가 있습니다.MapStruct - @Mapper annotation은 빈을 생성하지 않습니다.
@Mapper
public interface CategoryMapper {
CategoryMapper INSTANCE = Mappers.getMapper(CategoryMapper.class);
CategoryDTO categoryToCategoryDTO(Category category);
}
@Data
public class CategoryDTO {
private Long id;
private String name;
}
도메인 클래스 :
이@Data
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
서비스 클래스 :
@Service
public class CategoryServiceImpl implements CategoryService {
private final CategoryMapper categoryMapper;
private final CategoryRepository categoryRepository;
public CategoryServiceImpl(CategoryMapper categoryMapper, CategoryRepository categoryRepository) {
this.categoryMapper = categoryMapper;
this.categoryRepository = categoryRepository;
}
}
와의 pom.xml 의존성에
, 나는 두 붙여 :: 을3210<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<org.mapstruct.version>1.2.0.CR2</org.mapstruct.version>
</properties>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
그리고 플러그인 :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<compilerArg>
-Amapstruct.defaultComponentModel=spring
</compilerArg>
</compilerArgs>
</configuration>
</plugin>
설명 :
Parameter 0 of constructor in
guru.springfamework.services.CategoryServiceImpl required a bean of type 'guru.springfamework.api.v1.mapper.CategoryMapper' that could not be found.
작업 :
Consider defining a bean of type 'guru.springfamework.api.v1.mapper.CategoryMapper' in your configuration.
내 IntelliJ를 주석에 @Mapper가 빈을 생성하지 않는 생각 매퍼. John GitHub에서 코드를 변경하지 않았습니다. 아이디어가 있으십니까? 경로 생성 소스를 대상으로 변경하려고 시도했지만 도움이되지 않습니다. 도움을 주셔서 감사합니다.
intellij 기본 설정에서 주석 처리가 활성화되어 있는지 확인하십시오. – wsl
예. 사용할 수 있습니다. – Kutti
이상하게도, 예제 브랜치 mapstruct를 컴파일하고 실행하면 모든 것이 작동하는 것처럼 보입니다. 어쩌면 intellij 버전을 업데이트하거나 intellij 용 mapstruct 플러그인을 설치하려고 시도하십시오 – wsl