코드 그라데이션

핵심 가이드 - 의존성 주입, 관점 지향 프로그래밍 본문

Spring/핵심 가이드

핵심 가이드 - 의존성 주입, 관점 지향 프로그래밍

완벽한 장면 2023. 1. 14. 20:07

- 이 두 가지 기능을 애플리케이션 전체에 제공함으로써 생산성/유지보수성이 높은 애플리케이션 구축을 가능하게 한다.

 

의존성 주입(DI) (Dependency Injection)

: 의존하는 부분을 외부에서 주입하는 것

 

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

: 다음 두 가지 요소로 구성됨

- 중심적 관심사: 실현해야 할 기능을 나타네는 프로그램

- 횡단적 관심사: 본질적인 기능은 아니지만 품질이나 유지보수 등의 관점에서 반드시 필요한 기능을 나타내는 프로그램.

                           (실현하는 프로그램과 별도로 부수적으로 필요한 프로그램) 

--ex) 예외 처리 / 로그 정보 화면이나 파일 등으로 출력 처리 / 데이터베이스의 트랜잭션 제어 등

 

의존성

- 사용하는 객체(A클래스), 사용되는 클래스(B클래스)라고 가정.

--> A클래스에서 B클래스를 사용하려면 new 키워드를 이용해 B 클래스의 인스턴스를 생성하고,

     B클래스의 메서드를 사용하지.

이 때 B클래스에서 구현했던 메서드를 변경하면 그 영향으로 A클래스에서도 해당 메서드를 변경해야 한다.

이를 "A 클래스는 B 클래스에 의존한다" 라고 표현함

 

의존의 두 형태 : 클래스 의존(구현 의존)과 인터페이스 의존

 

클래스 의존(구현 의존)

 - 사용하는 객체 클래스에서 사용되는 객체 클래스의 타입을 직접 지정해 버리면 후자를 변경할 경우 이를 이용하고 있는 곳을 모두 수정해야 한다. 수정할 부분이 너무 늘어나버리면 위험성이 매우 커지겠지.

 

인터페이스 의존

- 인터페이스를 구현한 '사용되는 객체' 클래스를 변경하는 경우 다음과 같은 이점이 있다. 

 (1) 인터페이스는 참조를 받는 유형으로 사용할 수 있으므로 변수의 이름을 변경하지 않아도 된다.

 (2) 인터페이스가 선언된 메서드를 이용하면 클래스가 바뀌어도 메서드명을 변경하지 않아도 된다.

 

따라서, 클래스 의존보다 인터페이스 의존을 사용하여 수정할 곳을 줄인다.

 

728x90
Comments