오늘 비즈니스 로직을 처리해주는 Service 계층 그리고 Data Access 계층을 배웠다.
이 그림을 미리 봐 두었던 것이 mapper의 역할을 이해하는 데 있어서 큰 역할을 했던 것 같다.
간단히 오늘 배운 Service 계층과 mapper 클래스의 역할을 정리한 후 오류에 대해 작성해보도록 하겠다.
서비스(Service) 계층
비즈니스 로직을 처리하는 계층이다.
✅ 서비스 계층은 애플리케이션의 비즈니스 규칙과 정책을 구현하며, 데이터의 유효성 검사, 트랜잭션 관리, 보안 검사 등의 작업을 수행한다.
✅ 컨트롤러(Controller) 계층에서 전달받은 요청을 처리하고, 필요한 데이터 액세스 계층의 메서드를 호출하여 데이터를 가져온 후, 비즈니스 로직을 수행한다.
✅@Service 애노테이션을 이용하여 표시
✅스프링의 의존성 주입(Dependency Injection) 기능을 통해 데이터 액세스 계층과 연결된다.
mapper 클래스
✅ 객체와 데이터베이스 간의 매핑(mapping)을 처리 → 매퍼 클래스는 데이터베이스와의 상호작용을 담당
✅ 주로 MyBatis나 Hibernate와 같은 ORM(Object-Relational Mapping) 도구와 통합하여 데이터베이스와의 상호작용을 관리 → 아직 안 배웠음
✅ 비즈니스 로직과 데이터 액세스 로직을 분리하여 유지보수성과 확장성을 높일 수 있
✅ @Mapper(componentModel = "spring")
🚨 에러 발생
스프링을 시작하고 난 후로부터 하루도 빠짐없이 이슈 발생이다..
매일 에러가 없이 못 지나가는 듯 하다.
오늘 페어가 끝날 무렵 에러가 발생했다.
Could not autowire. No beans of 'CoffeeMapper' type found.
분명 @Mapper(componentModel = "spring") 어노테이션도 다 잘 설정해줬는데 왜 Bean 생성이 안 되었을까...🥲
아고라스테이츠에 가보니 다행히(? 같은 에러가 발생한 분들이 많았다.
덕분에 도움을 쉽게 받았고, 에러도 별 문제 없이 잡을 수 있었다. 문제는 한 번에 해결되지 않아 어떤 것으로 해결이 된 건지 알 수가 없다는 점이다....ㅋㅋㅋㅋㅋㅋ
댓글에도 다들 분명 했는데도 안된다는 글이 있었는데 여러 번 실행하다 보니 됐다고.. 나도 안되길래 다시 인텔리제이를 실행했더니 오류가 사라져 있었다.
1. Mapper 클래스에 @Component Annotation 달아주기
@Mapper(componentModel = "spring")
이렇게 매퍼 클래스에 Annotation을 추가로 달아주었다.
2. 버전 업데이트 하기
build.gradle에 들어가서 버전을 업데이트 시켜주었다.
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
✨ build.gradle을 수정하고 나면 gradle reload 필수!
이렇게 두 개를 해도 안 없어져서 댓글을 보고 인텔리제이를 다시 실행해보았더니 됐다 : )
혹시라도 실행이 안된다면 다시 실행 해보는 것을 추천...!
오늘은 집단 지성에 대해 배웠다. 공유할 수 있다는 것이 너무 좋은 것 같다ㅎㅎ
근데 문제는 진짜 하루하루 시간이 너무 부족하다...🥲
요즘 정처기 공부하느라 기본적으로 세시간~ 네시간은 빠지게 되니 더욱 힘든 듯 하다..
얼른 자야지 ....