본문 바로가기

Development/Spring Framework

(21)
스프링 삼각형과 설정 정보 (2) AOP AOP [ Aspect-Oriented Programming ] 직역하자면 '관점 지향 프로그래밍'이다. DI는 의존성에 대한 주입이라면, 스프링 AOP는 로직(code) 주입이라고 할 수 있다. 프로그램을 작성하다 보면 다수 모듈이 공통적으로 나타나는 부분이 존재하는데, 이를 횡단 관심사(Cross-cutting concern)이라고 한다. 이 말이 이해가 되지 않는다면 DB와 연결할 때 코드를 생각하면 된다. ( 책 284 페이지 참고 ) 코드 = 핵심 관심사 + 횡단 관심사 이 말은 무엇이냐, 공통적으로 나타나는 횡단 관심사와 모듈별로 다르게 나타나는 핵심 관심사로 이루어져있다는 것이다. 앞서 AOP는 로직 주입이라고 설명하였는데, 로직을 주입한다면 어디에 주입할 수 있는가? 위 그림처럼 총 다섯 ..
스프링 삼각형과 설정 정보 (1) IoC/DI 스프링 삼각형과 설정 정보 스프링을 이해하기 위해 POJO [ Plain Old Java Object ]를 기반으로 스프링 삼각형이라는 IoC/DI, AOP, PSA라고 하는 3대 프로그래밍 모델에 대한 이해가 필수이다. POJO 오래된 방식의 간단한 자바 오브젝트라는 뜻으로, JAVA EE 등 중량 프레임워크들을 사용하며 해당 프레임워크에 종속된 무거운 객체를 만들게 된 것에 반발해 사용하게 된 용어이다. 쉽게 이야기하자면, 특정 기술에 종속되어 동작하는 것이 아닌 순수한 자바 객체를 이야기하는 것이다. POJO에 대해서는 다음에 자세히 살펴보도록 하자. IoC/DI : 제어의 역전/의존성 주입 프로그래밍에서의 의존성이란? 책에서 설명하기를.. 의사 코드 운전사가 자동차를 생산한다. 자동차는 내부적으로..
스프링디자인패턴(3) 데코레이터 패턴 - Decorator Pattern 데코레이터 패턴 [ Decorator Pattern ] Decorator는 장식자라고 보면 됩니다. 이는 해석 그대로 원본에 장식을 더하는 패턴입니다. 이는 Proxy 패턴과 구현 방법은 동일하지만, 반환 값에 장식을 입힌다는 것에 차이를 갖고 있습니다. 즉, 데코레이터 패턴을 통해 추가적 요건을 동적으로 추가하는 것입니다. 둘의 차이를 한 번 더 정리하자면 아래 표와 같습니다. 데코레이터 패턴 UML 위 그림은 데코레이터 패턴의 기본 UML입니다. 데코레이터 패턴 특징 가장 큰 특징은 메서드 호출 반환 값에 변화를 주기 위해 중간에 장식자를 두는 패턴입니다. 확장에는 열려있고, 변경에는 폐쇄적이라는 점에서 OCP 원칙과 추상화된 인터페이스에 의존한다는 점에서 DIP 원칙이 적용되어야 합니다. 즉, 디자..
스프링디자인패턴(2) 프록시 패턴 - Proxy Pattern 프록시 패턴 (Proxy Pattern) Proxy는 대리인을 뜻하는 것으로, 청와대의 대변인을 생각하면 쉽습니다. 청와대 대변인들은 본인 의견을 말하기 보다 입장을 대리해서 이야기하는데, 이 개념이 엔티티에 적용되었다고 생각하면 됩니다. 프록시 패턴은 Service 메서드가 가진 메서드와 같은 이름을 사용하는데, 이를 위해 인터페이스를 이용합니다. 즉, 인터페이스로 구현을 강제하는 것이지요. 이로 같은 이름의 메서드가 구현되는데, 클라이언트는 실제 서비스 객체로 값을 받는지 프록시로 값을 받는지 알 수 없습니다. 여기서 중요한 포인트가 존재합니다. 대변인은 공식 입장문에 자신의 이야기를 추가하지 않지요? 그것처럼 프록시 패턴도 반환되는 결과 값을 그대로 반환할 뿐, 절대 무언가를 가감하지 않고 순수하게..
스프링 디자인패턴(1) 어댑터 패턴 - Adapter Pattern 디자인패턴 (Design Pattern) 객체 지향 특성과 설계 원칙을 기반으로 구성됨 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하며 만들어진 해결책 중 많은 이들이 인정한 방식으로 정리한 것 어댑터 패턴 (Adapter Pattern) 어댑터를 직역하자면 변환기이며, 이 패턴 또한 마찬가지로 서로 다른 두 인터페이스 사이 통신이 가능하게 한 것이다. 즉, 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 전환한 것이다. 고로 어댑터 패턴을 이용하면 호환성 문제로 같이 쓸 수 없는 클래스를 연결해서 사용할 수 있다. 대표적인 예시로 ODBC와 JDBC, JVM이 존재한다. 어댑터 패턴 또한 확장에는 열려있으나, 변경에는 닫혀있어 SOLID 원칙 중 OCP을 따른다..