IT/Spring

Spring[6] - Layered Architecture & @Component

올빼밋. 2022. 6. 28. 21:39
728x90

<<<<<< 6. Layered Architecture & @Component >>>>>>

 

목차 : 1. Layered Architecture와 MVC패턴 이해, 2. @Component 어노테이션 이해와 사용

 

1. Layered Architecture와 MVC패턴 이해

Layered Architecture - 특징

계층화 아키텐처

  • 효율적인 개발과 유지보수를 위해 계층화하여 개발
  • 대부분의 중/대규모 어플리케이션에서 적용
  • 각 레이어는 독립된 R&R을 가짐

 

프레젠테이션 영역

  • 사용자와 상호작용을 담당
  • 사용자의 요청을 분석/응답

—> 클라이언트와 연결

 

비즈니스 영역

  • 기능을 수행
  • 트랜잭션 수행

—> 핵심 기능을 가지고 있음

—> 데이터를 컨트롤하는 레이어를 별도로 분리 : DAO

—> 기능에만 집중할 수 있도록 사용자 요구 사항(requirement)의 구현에 집중할 수 있도록 양쪽의 기능을 분리시켜놓았다는 관점으로 볼 수 있음

 

데이터 영역

  • 데이터의 저장과 조회를 담당
  • 주로 데이터베이스와 연동하여 작업

—> DB와 연결

 

 

MVC 패턴

MVC 패턴

  • Layered Architecture를 사용한 대표적 패턴
  • 어플리케이션을 Model, View, Controller로 구분
  • UI를 가지는 대부분의 어플리케이션은 MVC 혹은 변형된 MVC 패턴을 사용
  • 예) Angular, Android, iOS, SpringMVC..

 

—> View와 model을 중간에서 Binding 시켜주는 Controller

—> 프레젠테이션 레이어를 세분화시켜놓았다 => MVC 패턴

—> 사용자의 요구사항이 높아지고, 편리성을 요구하기에 프레젠테이션 영역이 중요해지고 있다.

 

2. @Component

컴포넌트 자동등록

어노테이션(Annotation)을 사용

“컴포넌트 = 빈” —> 컴포넌트를 스프링 컨테이너에서 관리되고 있는 빈이라고 할 수 있다.

어노테이션을 통해 컴포넌트를 자동 등록해주는 기능을 제공하고 있다.

스프링에서는 컴포넌트 어노테이션을 상속한 세개의 어노테이션을 주로 사용.

 

xml설정 파일

<context: component-scan base-package=“패키지명” />

다음 태그를 추가하여 @Component 어노테이션을 포함하는 모든 클래스를 빈으로 자동 등록해준다.

 

Context:component-scan

  • Bean이 될 수 있는 모든 Component들을 자동으로 찾아 Bean Container에 등록
  • 단, 의존성 관계 등록은 따로 하지 않음

 

@Autowired

  • Component간의 의존관계는 Autowired라는 Annotation으로 적용
  • Compoent-scan과 수동(Setter, 생성자) DI는 혼용해서 사용 가능

—> @Autowired 통해 dependency injection 자동으로 이루어짐

728x90