스프링 프레임워크란 무엇인가
스프링 프레임워크란
- 스프링 프레임워크: 자바와 코틀린 기반 엔터프라이즈 애플리케이션을 만들기 위한 오픈소스 프레임워크
- 반복적인 동작(객체 생성, 의존관계 연결, 트랜잭션 등)을 프레임워크 기능에 맡김. 즉, 개발자는 비즈니스 로직에만 집중할 수 있게 됨
핵심 특징
IoC 컨테이너

- IoC: Inversion of Control, 제어의 역전
public class OrderService {
private final DiscountPolicy discountPolicy;
public OrderService() {
this.discountPolicy = new FixDiscountPolicy();
}
}
-
스프링 컨테이너를 사용하지 않으면 직접 필요한 객체를 생성하고 의존관계 연결을 관리해야 함
-
스프링에서는 객체의 생성과 생명주기 관리 같은 책임을 프레임워크에 위임
-
IoC 컨테이너: 등록된 빈 정보를 바탕으로 객체 생성, 필요한 의존 객체를 주입함
-
빈(Bean): 컨테이너가 관리하는 객체
AOP

-
로깅, 트랜잭션 처리, 보안 검사, 성능 측정처럼 핵심 비즈니스 로직과 별개로 여러 곳에서 반복적으로 필요한 기능이 있음
-
이러한 기능을 직접 작성하면 코드 중복이 발생하고, 핵심 로직이 모호해짐
-
AOP: Aspect Oriented Programming, 관점 지향 프로그래밍. 공통 관심사를 비즈니스 로직과 분리해서 별도로 관리하는 방법
-
장점
- 중복 코드가 줄어듦
- 비즈니스 로직과 부가적인 로직 분리 가능
- 유지보수성을 높일 수 있음
포터블 서비스 추상화(PSA)

- PSA: 포터블 서비스 추상화, 구현체별 API와 애플리케이션 코드 사이에 추상화 계층을 두는 방식
- 특정 구현체 API를 직접 호출하기보다, 스프링이 제공하는 공통 API나 어노테이션, 템플릿을 사용함
- 예를 들어 트랜잭션은
@Transactional과PlatformTransactionManager, JDBC 접근은JdbcTemplate, 모두 스프링이 제공하는 추상화 요소들임
댓글