- 
                            
                            MapStruct 의 @Mapper 사용에 대해 알아보자!Server/Spring Boot 2025. 4. 16. 11:37728x90반응형🛠️ Mapper 인터페이스 작성 & 사용 예제1. Entity, DTO 클래스 예시// User 엔티티 public class User { private Long id; private String username; private String email; // getter/setter 생략 }// UserDto public class UserDto { private String username; private String email; // getter/setter 생략 }2. Mapper 인터페이스 작성import org.mapstruct.Mapper; import org.mapstruct.Mapping; @Mapper(componentModel = "spring") public interface UserMapper { // Entity → DTO UserDto toDto(User user); // DTO → Entity User toEntity(UserDto userDto); }✅ Tip: 이름이 같은 필드는 자동 매핑됩니다. 
 이름이 다르거나 변환 로직이 필요할 경우@Mapping어노테이션을 사용하세요.3. 실제 사용 예제 (Service 계층)@Service public class UserService { private final UserRepository userRepository; private final UserMapper userMapper; public UserService(UserRepository userRepository, UserMapper userMapper) { this.userRepository = userRepository; this.userMapper = userMapper; } public UserDto getUserDtoById(Long id) { User user = userRepository.findById(id) .orElseThrow(() -> new RuntimeException("사용자 없음")); return userMapper.toDto(user); } public void saveUser(UserDto userDto) { User user = userMapper.toEntity(userDto); userRepository.save(user); } }
 🧩 @Mapper 주요 속성 설명속성명 설명 componentModelspring,jsr330,cdi,default중 선택.
 Spring Bean으로 등록하고 싶다면spring사용.uses다른 Mapper를 내부적으로 사용하는 경우 명시. 
 예:@Mapper(uses = AddressMapper.class)importsstatic 메서드 등을 매핑에 활용하기 위해 클래스 import 가능. unmappedTargetPolicy매핑되지 않은 필드에 대한 경고 설정. IGNORE,WARN,ERROR가능.nullValueMappingStrategynull 값 처리 방식 지정. RETURN_NULL,RETURN_DEFAULT등 사용 가능.
 💡 추가 팁- 컴파일 시 자동으로 UserMapperImpl클래스가 생성됩니다.
- @Mapping어노테이션을 활용하면 필드명이 다른 경우도 쉽게 매핑할 수 있습니다.
- 리스트 매핑도 아래처럼 쉽게 작성 가능해요:
 List<UserDto> toDtoList(List<User> users);728x90반응형'Server > Spring Boot' 카테고리의 다른 글MapStruct 의 다양한 사용에 대해 알아보자 (0) 2025.04.16 MapStruct 의 @Mapping 사용 방법을 알아보자! (1) 2025.04.16 [Springboot] 엔티티와 DTO 간 변환시 MapStruct 사용해야 하는 이유? (0) 2025.04.16 [Springboot] 외부 HTTP 호출 Retry와 재처리 전략 (1) 2025.04.15 Springboot Timezone(타임존) 에 대해 알아보자! (1) 2025.04.15 
- 컴파일 시 자동으로