Search
⚠️

스프링 트라이앵글 (1)

태그
spring boot

스프링의 3대 요소

1. 제어 역전(IoC, Inversion of Control)

개발자가 아닌 툴이 제어권을 가져 클래스가 의존 객체를 직접 만드는 것이 아니라 주입받아서 사용한다는 것을 말함
스프링 프레임워크에서 IoC 컨테이너에 있는 ApplicationContext와 BeanFactory 덕분에 Bean으로 지정한 모든 클래스를 인스턴스로 등록해주어 다른 클래스에서 의존관계가 필요하다면 의존성 주입이 가능
라이브러리는 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들의 모음을 말하고 프레임워크는 제이의 역전 IoC 개념이 적용된 대표 기술
둘의 큰 차이는 “제어 흐름에 대한 주도권이 누구에게 있는가”

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

사용자 기반 주 업무 처리가 아닌 개발자, 운영자를 위한 구현 중 공통으로 처리되어야 하는 로그 출력, 보안 처리, 예외와 같은 코드를 모아서 처리를 편리하게 해줌
모든 요청(request)는 서블릿(Servlet)에 도달하기 전에 필터(Filter)가 먼저 해당 요청을 가로채 필터링하고 필터링된 출력값이 서블릿으로 감. 그리고 서블릿을 거쳐 내부 로직을 처리하는 중에 입/출력단에서 다시 한번 인터셉터(Interceptor)가 동작하는데,이 필터와 인터셉터 계층에게 공통기능을 맡김으로서 개발자가 원하는 특정 로직에 공통 기능을 적용 가능

3. 추상화 서비스 (PSA, Portable Service Abstraction)

외부 라이브러리들을 POJO로 사용할 수 있도록 일종의 껍데기를 씌워 추상화한 것으로, 스프링에서 추상화된 서비스들을 자바 언어로 자유롭게 사용 가능
POJO란, 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트
어떤 기술의 내부는 숨기고 개발자에게 편의성을 제공해주는것을 서비스 추상화라고합니다.
PSA는 서비스 추상화로 제공되는 기술을 다른 기술 스택으로 간편하게 바꿀 수 있는 확정성을 가지고 있는것을 말합니다.