[Book Study] Spring Framework 스프링 프레임워크 첫걸음
3. 스프링 프레임워크의 핵심 기능 알아보기
3 - 1 스프링 프레임워크의 핵심 기능
1. 의존성 주입 (DI; Dependency Injection)
- 프로그램에서 의존하는 부분을 외부에서 주입하는 것
2. 관점 지향 프로그래밍 (AOP : Aspect Oriented Programming)
- 공통 처리 등의 '횡단점 관심사'를 추출하고 프로그램의 여러 곳에서 호출할 수 있게 설정함으로써 개발자는 실현해야 할 기능인 '중심적 관심사'에만 집중해서 작성하면 되는 구조
* 프로그램의 구성 요소 2가지
1) 중심적 관심사(Primary Concern) : 실현해야 할 기능을 나타내는 프로그램
2) 횡단적 관심사(Crosscutting-Concerns) : 본질적인 기능은 아니지만 품질이나 유지보수 등의 관점에서 반드시 필요한 기능을 나타내는 프로그램 (실현하는 프로그램과 별도로 부수적으로 필요한 프로그램)
ex) 예외처리, 로그 정보 화면이나 파일 등으로 출력 처리, 데이터베이스의 트랜잭션 제어 등
3 - 2 DI 컨테이너 알아보기
의존성
- 사용하는 객체 'A', 사용되는 객체 'B'
- A클래스에서 B클래스를 사용하려면 new 키워드를 이용해 B 클래스의 인스턴스를 생성하고 B 클래스의 메서드를 사용하게 된다. 이때 B 클래스에서 구현했던 메서드를 변경하면 그 영향으로 A클래스에서도 해당 메서드를 변경해야 한다. 이런 관계를 'A 클래스는 B 클래스에 의존한다'라고 한다.
의존 유형 2가지
1. 클래스 의존 (구현 의존)
2. 인터페이스 의존
-> 클래스 의존보다 인터페이스 의존을 사용하는 것으로 수정할 곳을 줄일 수 있다.
인터페이스에 의존하는 프로그램 만들기
-> '사용되는 객체'클래스를 변경할 때는 '사용하는 객체'클래스에서 세 곳을 변경해야 했고, 인터페이스 의존을 작성했을 때는 한 곳만 수정하면 됐다. 하지만 '의존성 주입'을 사용하면 '사용하는 객체'의 클래스를 수정하지 않아도 된다.
DI 컨테이너
- 인스턴스 생성(기존 new 키워드 사용)과 같은 작업을 프레임워크에 맡길 수 있고 그 역할을 하는 것
DI 컨테이너 다섯 가지 규칙
- '사용하는 객체' 클래스를 전혀 수정할 필요가 없게끔 만들 수 있음
규칙 1 : 인터페이스를 이용하여 의존성을 만든다.
-
규칙 2 : 인스턴스를 명시적으로 생성하지 않는다.
-
규칙 3 : 어노테이션을 클래스에 부여한다.
-
규칙 4 : 스프링 프레임워크에서 인스턴스를 생성한다.
-
규칙 5 : 인스턴스를 이용하고 싶은 곳에 어노테이션을 부여한다.
-
3 - 3 어노테이션 역할 알아보기
세 가지 항목
1) 어노테이션(annotation) 은 주석을 의미하는 영어 표현
2) '@xxx' 와 같은 형태로 작성
3) 외부 소프트웨어에 필요한 처리 내용을 전달
어노테이션의 '가려쓰기'
- 네 종류 모두 인스턴스 생성이라는 역할을 같지만, 사용하는 위치에 따라 어노테이션을 가려 쓰자!
'도메인 주도 설계'의 레이어
1. 애플리케이션 레이어 (Application Layer)
- 클라이언트와의 데이터 입출력을 제어하는 레이어
2. 도메인 레이어 (Domain Layer)
- 애플리케이션의 중심이 되는 레이어로서 업무 처리를 수행하는 레이어
3. 인프라스트럭처 레이어(Infrastructure Layer)
- 데이터베이스에 대한 데이터 영속성 등을 담당하는 레이어
레이어별 인스턴스 생성 어노테이션
1. @Controller : 애플리케이션 레이어의 컨트롤러에 부여
2. @Service : 도메인 레이어의 업무 처리에 부여
3. @Repository : 인프라 레이어의 데이터베이스 액세스 처리에 부여
커스텀 어노테이션
- java.lang.Annotation 인터페이스를 상속하고 만들 수 있음
- 커스텀 어노테이션을 정의할 때는 전용 자바 파일을 생성할 필요가 있음
3 - 4 AOP(관점 지향 프로그래밍)의 기초 지식
AOP 고유 용어
1) 어드바이스 (Advice)
- 횡단적 관심사의 구현(메서드), 로그 출력 및 트랜잭션 제어 등
2) 애스팩트 (Aspect)
- 어드바이스를 정리한 것(클래스)
3) 조인포인트 (JoinPoint)
- 어드바이스를 중심적인 관심자에 적용하는 타이밍, 메서드(생성자) 실행 전, 메서드(생성자) 실행 후 등 실행되는 타이밍
4) 포인트컷 (Pointcut)
- 어드바이스를 삽입할 수 있는 위치, 예를 들어, 메서드 이름이 get으로 시작할 때만 처리하는 조건을 정의
5) 인터셉터 (Interceptor)
- 처리의 제어를 인터셉트하기 위한 구조 또는 프로그램
- 스프링 프레임워크에서는 인터셉트라는 메커니즘을 어드바이스를 중심 관심사에 추가한 것처럼 보이게 함
6) 타깃 (Target)
- 어드바이스가 도입되는 대상
3 - 5 Spring Initializr 알아보기
의존성 주입
-
'Web Develop > Book Study' 카테고리의 다른 글
[Book Study] 스프링 프레임워크 첫걸음 - 6. 템플릿 엔진 알아보기 (0) | 2023.08.12 |
---|---|
[Book Study] 스프링 프레임워크 첫걸음 - 5. MVC 모델 알아보기 (0) | 2023.08.11 |
[Book Study] 스프링 프레임워크 첫걸음 - 4. 데이터베이스 작업 (0) | 2023.08.09 |
[Book Study] 스프링 프레임워크 첫걸음 - 2. 기초 지식 배우기 (0) | 2023.08.08 |
[Book Study] 스프링 프레임워크 첫걸음 - 1. 스프링 프레임워크 알아보기 (0) | 2023.08.08 |
댓글