스프링 트라이앵글


스프링 프레임워크에서의 스프링 트라이앵글은 스프링의 3대 요소를 나타내는 용어입니다. 이 요소들은 제어 역전(IoC), 관점 지향 프로그래밍(AOP), 추상화 서비스(PSA)입니다. 이 요소들은 스프링 프레임워크의 핵심 기능과 철학을 담고 있습니다.

제어 역전(IoC)

제어 역전(IoC)은 개발자가 아닌 프레임워크가 객체의 생성과 의존성 주입을 관리하는 것을 말합니다. 이를 통해 개발자는 객체 간의 결합도를 낮추고 유연한 코드를 작성할 수 있습니다. 스프링에서는 IoC 컨테이너라고 불리는 ApplicationContext와 BeanFactory 인터페이스를 통해 IoC를 구현합니다. IoC 컨테이너는 빈 설정 소스로부터 빈 정의를 읽어들이고, 의존관계를 설정하여 빈을 구성하고 제공해줍니다.
빈은 스프링 IoC 컨테이너가 관리하는 객체로, 싱글톤으로 생성되며 필요할 때 주입받아 사용할 수 있습니다. IoC 컨테이너는 또한 빈의 생명 주기를 관리하며, 스프링의 라이프사이클 콜백 인터페이스를 이용하여 부가적인 기능을 수행할 수 있습니다.

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

관점 지향 프로그래밍(AOP)은 핵심 비즈니스 로직 외에 공통으로 처리되어야 하는 로그 출력, 보안 처리, 예외 처리 등의 코드를 모아서 처리하는 것을 말합니다. 이를 통해 개발자는 코드의 중복과 난잡함을 줄이고, 모듈성과 재사용성을 높일 수 있습니다.
스프링에서는 프록시 패턴을 기반으로 AOP를 구현합니다. 프록시 패턴은 핵심 로직을 구현한 객체에 접근하기 전에 중간에 다른 객체(프록시)를 두어 공통 기능을 적용하는 방식입니다. 스프링에서는 @Aspect 어노테이션을 이용하여 AOP를 적용할 클래스를 정의하고, @Pointcut 어노테이션을 이용하여 AOP를 적용할 메서드나 클래스를 지정합니다. 그리고 @Before, @After, @Around 등의 어노테이션을 이용하여 AOP를 적용할 시점을 정의합니다.

추상화 서비스(PSA)

추상화 서비스(PSA)는 외부 라이브러리들을 POJO로 사용할 수 있도록 일종의 껍데기를 씌워 추상화한 것입니다. 이를 통해 개발자는 스프링에서 추상화된 서비스들을 자바 언어로 자유롭게 사용할 수 있게 됩니다. 또한 완전히 다른 기술 스택으로도 애플리케이션이 작동할 수 있도록 해주어 코드를 바꿀 일이 줄어들게 됩니다.

스프링에서는 다양한 추상화 서비스를 제공하는데요. 예를 들면, 스프링 트랜잭션 추상화는 JDBC, JPA, Hibernate 등 다양한 트랜잭션 API를 하나의 인터페이스로 통일하여 사용할 수 있게 해줍니다. 스프링 캐시 추상화는 EhCache, Redis, Memcached 등 다양한 캐시 라이브러리를 하나의 인터페이스로 통일하여 사용할 수 있게 해줍니다. 스프링 웹 MVC 추상화는 서블릿 API를 직접 사용하지 않고도 웹 애플리케이션을 개발할 수 있게 해줍니다.

마무리

이렇게 스프링 트라이앵글에 대해 알아보았습니다. 스프링 트라이앵글은 스프링 프레임워크의 핵심 개념과 기능을 담고 있는 용어로, 스프링을 공부하고 사용하려면 반드시 알아야 하는 내용입니다. 스프링 트라이앵글을 잘 이해하고 적용하면 스프링 프레임워크의 장점을 최대한 활용할 수 있습니다. 감사합니다.

'스프링' 카테고리의 다른 글

@RequestParam @PathVariable의 차이  (0) 2019.10.16
@RequestMapping  (0) 2019.10.16
스프링을 사용하는 이유  (0) 2019.03.26
MyBatis란?  (0) 2019.01.17
DI란?  (0) 2019.01.12

+ Recent posts