스프링 부트로 구현하는 웹서비스 - 6 Layers, Bean Injection

Bumgu·2023년 7월 15일
0

Web Layer

  • @Controller와 JSP/Freemarker등의 뷰 템플릿 영역
  • 이외에도 @Filter, 인터셉터, @ControllerAdvice등 외부 요청과 응답에 대한 전반적인 영역을 이야기함.

Service Layer

  • @Service에 사용되는 서비스 영역
  • 일반적으로 Controller와 Dao의 중간 영억에서 사용됨
  • @Transactional이 사용되어야 하는 영역이기도 함

Repository Layer

  • Database와 같이 데이터 저장소에 접근하는 영역
  • DAO(Data Access Object)의 영역으로 이해 할 수 있다.

Dtos

  • Dto (Data Transfer Object)는 계층 간에 데이터 교환을 위한 객체 를 이야기하며, Dtos는 이들의 영역을 이야기함

Domain Model

  • 도메인이라 불리는 개발 대상을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화 시킨 것을 도메인 모델이라고함.
  • 예를들어 택시 앱이라고 하면 배차, 탑승, 요금 등이 모두 도메인이 될 수 있음
  • @Entity를 사용해 봤다면 @Entity가 사용된 영역 역시 도메인 모델이라고 이해 하면 된다.
  • 다만, 무조건 데이터베이스의 테이블과 관계가 있어야만 하는 것은 아니다.
  • VO처럼 값 객체들도 이 영역에 해당하기 때문이다.

Bean Injection 빈 주입

Bean Injection 빈 주입의 방식으로는
1. @Autowired
2. setter
3. 생성자 Constructor

가 있는데, 가장 권장하는 방식은 3번 생성자로 주입받는 방식이다.
@RequiredArgsConstructor, @NoArgsConstructor등으로 할 수 있다. 롬복 어노테이션을 사용한 이유는 해당 클래스의 의존성 관계가 변경될 때 마다 생성자 코드를 계속해서 수정하는 번거로움을 해결하기 위함이다

profile
Software VS Me

0개의 댓글