/
스프링 프레임워크 핵심
스프링 프레임워크 핵심
핵심기술
POJO [1]
Plain Old Java Object
- 객체지향 프로그래밍 기법과 언어가 주는 장점인 유연한 설계와 재사용성 활용하여 비즈니스의 복잡성과 변화를 상대함.
- 객체지향 설계(OOD, Object Oriented Design) 및 객체지향 프로그래밍(OOP, Object Oriented Programming) 원칙을 참고할 것.
IoC / DI
- 제어의 역전(IoC) [2]
- Inversion Of Control
- 컴퓨터 프로그램의 사용자 지정 부분(프로그래머가 작성한 소스코드)이 프레임워크의 흐름제어를 받는 디자인 패턴임.
- 프레임워크의 일반적인 속성임.
- 헐리우드 법칙
- 의존성 주입(DI) [3]
- Dependency Injection
- IoC 구현을 통해 의존관계 해결을 위한 디자인 패턴임. [4]
테스트 하기 용이한 구조를 유도할 수 있음.
스프링은 xml 설정이나 애노테이션을 통해 의존성 주입을 쉽게 할 수 있는 방법을 제공함.
배경
AOP
- Aspect Oriented Programming
- 모듈성을 높일 목적으로 서로 다른 관심사를 분리(separation of cross-cutting concerns)하는 프로그래밍 패러다임. [6]
- 성격이 다른 로직(업무 로직과 업무 로직 외 공통적인 부분)이 함께 있는 경우 이를 분리해서 처리해야 복잡성을 해결할 수 있음.
- 로깅, 보안, 트랜잭션 등이 있음.
PSA
- Potable Service Abstraction
- 개발환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근하게 해주는 기능
- 서비스 추상화를 통해서 로우 레벨의 기술 구현 부분과 기술을 사용하는 인터페이스를 분리하고, 환경과 세부 기술에 독립적인 접근 인터페이스를 제공하면 기술적인 복잡함을 줄일 수 있음.
[1] ^ https://www.martinfowler.com/bliki/POJO.html
[2] ^ https://en.wikipedia.org/wiki/Inversion_of_control
[3] ^ https://en.wikipedia.org/wiki/Dependency_injection
[4] ^ https://www.martinfowler.com/articles/injection.html#InversionOfControl
[5] ^ http://docs.spring.io/spring/docs/current/spring-framework-reference/html/overview.html#overview-dependency-injection
[6] ^ https://en.wikipedia.org/wiki/Aspect-oriented_programming