본문 바로가기

프레임워크/Spring boot Annotation

@Repository자리와 @Service자리를 바꾼다면?

Annotation 메타데이터란?

Annotation(@)은 사전적 의미로는 주석이라는 뜻이다.
자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다.

그렇다면 @Service ? @Repository ?

위에서 말했다싶이 추가적인 정보 제공에 의미를 두어야 한다.

기본적으로, 개발자는 문제가 발생하면 빠르게 문제 원인을 찾고 판단하여 해결하여야 한다.

그러기 위해서는 각 패키지별로 역할을 나누어야  한다.

각 비즈니스 로직과 관련된 로직은 @Service annotation을 사용한 Service 패키지에 위임하고, DB 접근과 관련된 부분은 Repository 패키지에 위임한다.

 

그러면서 우리는 비즈니스 로직 에러 -> 서비스 패키지 찾자.DB 관련 에버 -> @Repository 붙은 패키지 찾자.라는 광범위한 에러의 수색범위를 줄일수 있게 된다.

그렇다면 @Service와 @Repository자리를 바꾸면 어떨까?

사실 메타데이터를 바뀐다고 Compile단계에서 혹은 Run Time 단계에서 에러를 발생시키지는 않는다.

다만, 커뮤니케이션의 문제가 발생한다고 생각한다.

서로간의 규칙 '@Service는 비즈니스, @Repository는 DB 접근' 이라는 규칙을 무시한다면 의사소통이라는 측면(개발자는 코드로 말을 하기에)에 크나큰 결함이 있다고밖에 생각할수가 없는것이다.

결론

어느테이션 한개를 붙이더라고 의미와 범위를 확실히 파악하고 사용하도록 하자.

비즈니스 로직 -> @Service, DB 접근 -> @Repository 의미와 규칙이다.

'프레임워크 > Spring boot Annotation' 카테고리의 다른 글

@RestController와 @ResponseBody의 상관관계  (0) 2022.07.13
@Qualifier, @Primary  (0) 2022.07.10