06강 Layered Architecture & @Component
- 목차
- 내용
- Layered Architecture 와 MVC 패턴 이해
- @Component 어노테이션의 이해와 사용
- 학습 목표
- Layered Architecture 를 이해하고 대표적 활용 사례인 MVC 패턴과
전자정부 프레임워크에 대해 살펴봄! - 어노테이션 기반 개발을 활용한 첫 번째 사례를 학습!
- Layered Architecture 를 이해하고 대표적 활용 사례인 MVC 패턴과
- 내용
- Layered Architecture의 특징
- 계층화 아키텍처
- 효율적인 개발과 유지보수를 위해 계층화 하여 개발
- 대부분의 중/대규모 어플리케이션에서 적용
- 인접한 층에게만 영향력을 가짐.
- View/Controller/Model 이 계층화 구조로 작용하는 것이 레이어드 아키텍처가 접목된 것.
- 프레젠테이션(화면) 영역
- 사용자와 상호작용을 담당
- 사용자의 요청을 분석하고 응답
- 비즈니스 영역(BusinessL ogic)
- 기능을 수행
- 트랜잭션 수행
- 사용자 요구사항인 Requirement에 집중한 영역.
- 데이터 영역(Data Access)
- DAO(Data Access Object)
- 데이터의 저장과 조회를 담당
- 주로 데이터베이스와 연동하여 작업
- 계층화 아키텍처
- MVC 패턴
- Layered Architecture를 사용한 대표적 패턴
- 어플리케이션을 Model, View, Controller로 구분
- UI를 가지는 대부분의 어플리케이션은 MVC 혹은 변형된 MVC 패턴을 사용
- ex) Angular, Android, iOS, SpringMVC...
- 전자정부 프레임 워크
- 컴포넌트(Bean) 자동 등록 기능 [ 스프링2.5에서 추가됨! ]
- Annotation을 사용
- @Component와 하위 어노테이션을 사용
- @Controller : Presentation
- @Service : Service
- @Repository : Persistence/DAO
- @Component와 하위 어노테이션을 사용
- <context:component-scan base-package="패키지 명" />
- 패키지 명 이후 하위 패키지를 검색해 @Component 어노테이션을
포함하는 모든 클래스를 빈으로 자동 등록합니다! - Bean이 될 수 있는 모든 Component들을 자동으로 찾아 Bean Container에 등록
- 단! 의존성 관계 등록은 따로 하지 않음.
- ??????????? 언제 스캔하는지??? 서버 기동 시 인가요??
- 패키지 명 이후 하위 패키지를 검색해 @Component 어노테이션을
- @Autowired
- Component 간의 의존 관계는 Autowired 라는 Annotation 으로 적용!
- Component-scan과 수동(Setter, 생성자) DI는 혼용해서 사용 가능합니다!!
- Annotation을 사용
- 실습 내용!
- 게시판의 글쓰기 기능 구현(DB 없이 가상 구현)
- BbsService.registArticle(Article )
- ArticleDAO.insertArticle(Article )
- Service, DAO, VO ... Layering
- @Service, @Repository 어노테이션 등록
- <context:component-scan .. /> 사용
- @Service/@Repository 태그를 달아서 컴포넌트 등록 가능한 스캔 대상이라고 해준 후,
- xml 네임스페이스인 context 를 정의한 후에,
context:component-scan 태그를 적은 후,
base-package = 패키지 네임 입력. 하위 패키지 모두 스캔 함. - 아래 Bean 을 없애도 됨. @Service/@Repository 등록 했기 때문이죠.
- <context:component-scan .. /> 사용
- 게시판의 글쓰기 기능 구현(DB 없이 가상 구현)
- @Autowired 사용으로 DI 구현
- Autowired는 DI 주입 기능임. Service 안에 DAO 객체에게 articleDAO 를 주입해주는 기능!
- 아래 그림과 같이 세터조차 필요 없음...
- 정리!!!
- Layered Architecture
- 다층 구조는 비즈니스 로직을 완전히 분리하여
데이터베이스 시스템과 클라이언트 사이에 배치한 클라이언트 서버 시스템의 일종입니다. - 예를 들어 사용자와 데이터베이스 간의 데이터 요구 서비스에 미들웨어를 이용하는 것을 들 수 있습니다.
- 일반적으로 3층 구조가 널리 쓰입니다.
- 다른 사례로는 OSI 7 Layer 가 있습니다.
- 다층 구조는 비즈니스 로직을 완전히 분리하여
- Layered Architecture
'Room 102. Back-end > Spring' 카테고리의 다른 글
[실전 개발자를 위한 Spring Framework ] 강의 - @Controller (0) | 2020.05.30 |
---|---|
[실전 개발자를 위한 Spring Framework ] 강의 - MVC 패턴 (0) | 2020.05.28 |
[실전 개발자를 위한 Spring Framework ] 강의 - DI 개념 (0) | 2020.05.25 |
[실전 개발자를 위한 Spring Framework ] 강의 - IoC (0) | 2020.05.24 |
[실전 개발자를 위한 Spring Framework ] 강의 - Maven (0) | 2020.05.19 |