핵심기술
POJO [1]
Plain Old Java Object
- 객체지향 프로그래밍 기법과 언어가 주는 장점인 유연한 설계와 재사용성 활용하여 비즈니스의 복잡성과 변화를 상대함.
- 객체지향 설계(OOD, Object Oriented Design) 및 객체지향 프로그래밍(OOP, Object Oriented Programming) 원칙을 참고할 것.
IoC / DI
- 소프트웨어 공학에서는 일반적으로 높은 응집도(cohesion)와 낮은 결합도(coupling)를 지향함.
- 와이어링(Wiring)
- 객체는 홀로 동작하지 않고, 서로 협력하여 목적을 달성하기 위해 다른 객체를 참조하게 됨. 이를 wiring이라고 함.
- 사용할 클래스를 생성하기 위해 new 연산을 하게 되는데 이 때 의도치 않은 구체적 구현체에 대한 참조 발생.
- 제어의 역전 (IoC)
- Inversion Of Control
- 프로그래머가 작성한 소스코드가 프레임워크의 흐름제어를 받는 소프트웨어 디자인 패턴임.
- 프레임워크의 일반적인 속성. 콜백 프로그램만 작성하면 됨.
- 헐리우드 법칙
- 의존성 주입 (DI)
- Dependency Injection
- IoC 구현을 통해 의존관계 해결을 위한 소프트웨어 디자인 패턴임.
테스트 하기 용이한 구조를 유도할 수 있음.
스프링은 xml 설정이나 애노테이션을 통해 의존성 주입을 쉽게 할 수 있는 방법을 제공함.
참고
AOP
- Aspect Oriented Programming
- 모듈성을 높일 목적으로 서로 다른 관심사를 분리(separation of cross-cutting concerns)하는 프로그래밍 패러다임.
- 성격이 다른 로직(업무 로직과 업무 로직 외 공통적인 부분)이 함께 있는 경우 이를 분리해서 처리해야 복잡성을 해결할 수 있음.
- 로깅, 보안, 트랜잭션 등이 있음.
- 참고 : Aspect-oriented programming
PSA
- Potable Service Abstraction
- 개발환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근하게 해주는 기능
- 서비스 추상화를 통해서 로우 레벨의 기술 구현 부분과 기술을 사용하는 인터페이스를 분리하고, 환경과 세부 기술에 독립적인 접근 인터페이스를 제공하면 기술적인 복잡함을 줄일 수 있음.
[1] ^ https://www.martinfowler.com/bliki/POJO.html