Search

스프링의 핵심 개념

먼저 스프링에 대해

간혹 웹 프레임워크로 오해하는 사람들이 많다. 스프링은 데스트톱과 웹 애플리케이션 등 여러 서버와 연동하여 동작해야 하는 엔터프라이즈 애플리케이션도 범용적으로 사용될 수 있는 애플리케이션 프레임워크이다.
복잡한 애플리케이션도 POJO로 개발할 수 있다.
Servlet은 반드시 HttpServlet을 상속해야 하는데 이는 상속하지 않도 된다.

핵심 기술

의존성 주입(DI)

쉽게 말하면 객체 관계를 관리한다. 예를 들어 A라는 클래스에서 B라는 클래스를 직접 생성해서 구현하면 다른 것으로 교체하기 힘들 수 있다. 그러나 외부에서 미리 만들어 넘겨주게 되면 의존성을 줄일 수 있다.

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

OOP를 더 OOP스럽게 보완해줄 수 있다. 트랜잭션, 로깅, 상태 체크 등 이러한 코드는 중복되는 경우가 많은데 AOP는 이런 코드를 실제 비즈니스 로직과 분리할 수 있게 도와줄 수 있다. 가장 유명한 프레임워크로는 AspectJ가 있다. 이를 활용하면 핵심 비즈니스 코드의 가독성을 높일 수 있다.

PSA(Portable Service Abstraction)

Spring은 @GetMapping, @PostMapping 등 애노테이션을 사용해서 요청을 매핑한다. 그러나 실제로는 내부적으로 서블릿 기반으로 동작하지만 이를 추상화를 하여 숨겼다. 이렇게 추상화 계층을 사용해서 내부에 숨기고 개발자에게 편의를 제공해주는 것이 Service Abstraction이라 한다. 여기서 더해서 Service Abstraction으로 제공되는 기술을 다른 기술로 바꿀 수 있는 확장성을 가지는 것이 Portable Service Abstraction이다. Spring은 Spring Web MVC, Spring Trasaction, String Cache 등 다양한 PSA를 제공한다.