본문 바로가기
Spring

03. 스프링 프레임워크의 핵심 기능

by hjwjddl 2023. 7. 9.

 스프링 프레임워크의 두 가지 핵심 기능에 대해 알아보자

 

첫 번째 기능은 의존성 주입(Dependency Injection) = DI이다. 

두 번째 기능은 관점 지향 프로그래밍(Aspect Oriented Programming) = AOP이다.

 

DI

의존성 주입(Dependency Injection) 

 

'의존하는 부분외부에서 주입하는 것'을 의미한다.

의존하는 부분: '사용하는 객체'를 클래스에 '사용되는 객체' 클래스가 작성된 상태

외부로부터 주입: '사용하는 객체' 클래스의 밖에서 '사용되는 객체' 인스턴스를 주입하는 것 

  • 클래스 의존
  • 인터페이스 의존 

 

DI 컨테이너

인스턴스를 생성하는데에 new 키워드를 사용했지만 인스턴스 생성과 같은 작업을 프레임워크에 맡길 수 있고 그 역할을 하는 것이 DI 컨테이너이다. 임의로 구현한 클래스를 인스턴스로 만들어주는 기능을 제공한다.

 

다섯가지 규칙
  1. 인터페이스를 이용하여 의존성을 만든다.
  2. 인스턴스를 명시적으로 생성하지 않는다.
  3. 어노테이션을 클래스에 부여한다.
  4. 스프링 프레임워크에서 인스턴스를 생성한다.
  5. 인스턴스를 이용하고 싶은 곳에 어노테이션을 부여한다.

 

 

 

어노테이션

어노테이션을 사용하면 에러를 출력하거나 프로그램의 동작을 변경하는 등 다양한 것을 할 수 있다.

  • 어노테이션(annotation)은 주석을 의미하는 영어 표현
  • '@xxx'와 같은 형태로 작성
  • 외부 소프트웨어에 필요한 처리 내용을 전달

 

애플리케이션을 만들 때는 레이어로 나누는 것이 좋은데 레이어(layer)란 '층'의 의미로 계층 구조로 되어 있는 각 층을 말한다. 즉 복잡한 전체 내용을 한 번에 정리해 이해하지 말고 계층화 해 각 계층별로 대상의 의미를 이해하는 것이다.

애플리케이션 레이어
(Application Layer)
애플리케이션 레이어는 클라이언트와 데이터 입출력을 제어하는 레이어
도메인 레이어
(Domain Layer)
도메인 레이어는 애플리케이션의 중심이 되는 레이어로서 업무 처리를 수행하는 레이어
인프라스트럭처 레이어
(Infrastructure Layer)
인프라스트럭처 레이어는 데이터베이스에 대한 데이터 영속성(Persistence Context)
등을 담당하는 레이어

 

레이어 별 인스턴스 생성 어노테이션을 설명하자면

  • 주요 처리
@Controller 애플리 케이션 레이어의 컨드롤러에 부여
@Service 도메인 레이어의 업무 처리에 부여
@Repository 인프라 레이어의 데이터베이스 액세스 처리에 부여

 

  • 보조 처리
@Component @Controller, @Service, @Repository의 용도 이외의 인스턴스 생성 대상 클래스에 부여

 

 

 

커스텀 어노테이션 

 직접 커스텀 어노테이션을 만들 수도 있다. 커스텀 어노테이션을 만들 때는 java.lang.Annotation 인터페이스를 상속하고 만든다. 커스텀 어노테이션을 정의할 때는 전용 자바 파일을 생성할 필요가 있다.

 

 

 

 


 

 

 

AOP

관점 지향 프로그래밍(Aspect Oriented Programming)

 간단하게 설명하면 공통 처리 등의 '횡단적 관심사'를 추출하고 프로그램의 여러 곳에서 호출할 수 있게 설정함으로써 개발자는 실현해야 할 기능인 '중심적 관심사'에만 집중하면 되는 구조이다. 

다음 두 가지 요소로 구성된다고 할 수있다.

중심적 관심사
(Primary Concern)
실현해야 하는 기능
횡단적 관심사
(Crossingcutting-Concerns)
실현하는 프로그램과 별도로 부수적으로 필요한 프로그램
   - 예외 처리
   - 로그 정보 화면이나 파일 등으로 출력 처리
   - 데이터베이스의 트랜잭션 제어 등

 

 

 

 

 

 

 

 

 

 

https://wikibook.co.kr/spring/

 

스프링 프레임워크 첫걸음: 그림과 실습으로 쉽게 배우는 스프링 프레임워크 완벽 입문서

세상에서 가장 친절한 스프링 프레임워크 입문서! 스프링 프레임워크는 전 세계적으로 가장 널리 사용되는 오픈소스 자바 애플리케이션 프레임워크입니다. 이 책에서는 스프링 프레임워크를

wikibook.co.kr