본문 바로가기
Web Develop/Book Study

[Book Study] 스프링 프레임워크 첫걸음 - 3. 스프링 프레임워크의 핵심 기능 알아보기

by tripleup 2023. 8. 9.
728x90
반응형

[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 알아보기

의존성 주입


 

 

 

728x90
반응형

댓글