스프링은 애플리케이션 아키텍처의 기반이 된다.
∨ MVC 프레임워크 (스프링 MVC, 스프링 웹 플로)
∨ JDBC를 추상화한 프레임워크 (스프링 JDBC)
∨ 기존 프레임워크
=> DIxAOP 컨테이너를 중심으로 통합 가능하다!
.
.
웹 애플리케이션의 각 레이어에는 어떤 스프링 기능이 해당하는지 알아보자.
프레젠테이션 층
∨ 스프링 MVC
: 스프링 MVC, 스프링 웹 플로 이용 가능
: 즉 MVC 프레임워크를 이용한다.
cf) 스프링 웹 플로를 이용시 Ajax 연계 가능
∨ 스프링 시큐리티
: 화면별 액세스 제어에 많이 사용된다.
: 물론 레이어 전체에서 사용 가능하다.
: 인증/인가 기능 제공 & 베이직 인증이나 OAuth 표준에 따라가는 인증서비스(페북, 트위터, 구글)를 사용 가능!
비즈니스 로직 층
∨ 스프링 DIxAOP 컨테이너
: DI를 통해 소프트웨어 부품화 & 설계 가능
( : DI는 오브젝트를 생성하고 오브젝트끼리 관계를 생성)
* recall : 부품화는 팀개발 & 유닛테스트를 쉽게 한다.
: DI를 이용하여 인터페이스 기반의 컴포넌트를 쉽게 구현 가능
: AOP를 이용하여 개발자가 비즈니스 로직에 집중 가능 (=> 부품화 촉진)
( : AOP는 오브젝트 책임 외의 로직을 소스코드에 명시적 기술하지 않고 나중에 추가 가능! 가령 사용자 인증, 로깅, 트랜잭션 관리, 예외 처리 등이 있다. 이것들은 뒤로하고 기능 구현에만 집중할 수 있게 해준다. )
∨ 스프링 캐시
이용자 증가 → 퍼포먼스 문제 발생 가능 ( : 대부분 RDB와의 처리에서 일어나는 문제 )
=> 스프링 캐시 : 데이터를 캐시해서 RDB와의 처리를 줄여 퍼포먼스 향상시키기 가능!
데이터 액세스 층
∨ 스프링 JDBC
: SQL문을 이용하는 형테의 데이터 액세스 프레임워크다.
: 이용법 - 'SELECT문', 'SELECT한 결과와 엔티티 클래스의 매핑'을 기술하기만 하면 된다.
cf) SQL말고 SML을 이용해 오브젝트와 테이블을 매핑하는 프레임워크도 많긴 하다.
: JDBC를 추상화하는 프레임워크
* JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API
∨ 스프링 데이터
: RDB, NoSQL 등 DB에 다른 데이터 스토어들이 액세스하는 것에 대한 통일화&단순화를 목적으로 한 프로덕트
: RDB에 JPA 등이 액세스 가능
: NoSQL에 MongoDB, Neo4j 등이 액세스 가능
* MongoDB : 도큐먼트형 DB
* Neo4j : 그래픽형 DB
∨ 스프링 ORM 인티그레이션 기능
: 데이터 액세스 층에서 스프링 JDBC를 반드시 이용할 필요는 없고, ORM 인티그레이션 기능을 이용하면 간단하게 서비스를 만들 수도 있다.
: 중요성은 많이 떨어졌으나 오래된 프레임워트나 하이버네이트를 이용하는 경우라면 유용하다고 한다.
: 그냥 넘어가자!!
웹 애플리케이션 개발에서 레이어와는 별개로 꼭 필요한 처리도 존재한다.
배치 처리와 같은 것이다.
∨ 스프링 배치
: 배치 처리를 실행하기 위한 템플릿이다.
: 배치 처리시 대량데이터의 일괄처리, 복수처리, 병행처리를 고려해야 하는데, 스프링 배치로 해결!
그냥 오전시간에 가볍게 읽어봤다.
웹애플리케이션의 어떤 레이어에 스프링의 각 기능이 적용되는지 간단히 알아봤다.
일단 그렇구나하고 넘어가도 지금은 충분할 것 같다.
다음부터는 이걸 공부하게 된다.
챕터2) 스프링 DI
챕터3) 스프링 AOP
그리고나서는 각 레이어의 설계&구현을 상세히 설명한다.
빨리 해야지!!
'web +a' 카테고리의 다른 글
기본&중요 | SOLID 그리고 스프링 (0) | 2022.07.04 |
---|---|
스프링&웹 | 스프링 DI (+ 계획 변경..!! ㅠㅅ ㅠ) (0) | 2022.06.30 |
스프링&웹 | 웹애플리케이션의 문제점 & 스프링의 해결 (0) | 2022.06.29 |
스프링&웹 | 기초 지식 2 - 레이어별 책임 (0) | 2022.06.28 |
스프링&웹 | 기초 지식 2 - 웹 애플리케이션 아키텍처 (0) | 2022.06.28 |