스프링 프레임워크란?
자바 기반의 애플리케이션 프레임워크
자바 언어를 이용해 엔터프라이즈급 개발을 편리하게 만들어주는 '오픈소스 경량급 애플리케이션 프레임워크'
쉽게 말해, 자바로 애플리케이션을 개발하는데 필요한 기능을 제공하고 쉽게 사용하도록 돕는 도구이다
스프링의 핵심 가치는
애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있게 하는 것!
스프링의 특징과 구조에 대해 알아보자
제어 역전(Ioc)
의존성 주입의 상위 개념으로,
스프링 컨테이너가 필요에 따라 개발자 대신 Bean들을 관리(제어) 해주는 행위
Spring에서는 xml 파일 또는 어노테이션 방식으로 스프링 컨테이너에 Bean(객체)를 등록하기만 하면,
컨테이너에서 Bean의 생명주기(생성 -> 의존성 설정 -> 초기화 -> 소멸)를 모두 관리해 준다
Ioc를 적용한 환경에서는 객체의 생명주기 관리를 외부에 위임합니다
외부는 스프링 컨테이너, Ioc 컨테이너를 의미합니다.
객체의 관리를 컨테이너에게 맡겨 제어권이 넘어간 것을 제어 역전(Ioc : Inversion od Control)이라 부릅니다.
개발자는 비즈니스 로직을 작성하는데 더 집중할 수 있게 된다.
객체들 간의 결합도를 낮춤으로써 코드의 재사용과 유지 보수성을 높일 수 있다.
의존성 주입(DI)
의존성 주입(ID : Dependency Injection)이란 제어 역전의 방법 중 하나
사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식
의존성을 주입받는 방법
- 생성자를 통한 주입
- 필드 객체 선언을 통한 의존성 주입
- setter 메 서드를 통한 의존성 주입
스프링에서는 @Autowired라는 어노테이션을 통해 의존성을 주입할 수 있습니다.
스프링 (4.3 이후 버전)에서는 @Autowired 어노테이션 생략 가능
@Component // 스프링 컨테이너에 Bean 으로 등록
public class A{
...
}
public class B{
@Autowired // 스프링 컨테이너에 있는 a 타입의 Bean을 주입
private A a;
}
관점 지향 프로그래밍(AOP)
관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)은 스프링의 중요한 특징
로깅, 보안, 트랜잭션 관리 등과 같은 공통적인 관심사를 모듈화 하여 코드 중복을 줄이고, 유지 보수성을 향상하는 데 도움을 줍니다.
객체지향 프로그래밍 패러다임을 보완하는 기술
메서드나 객체 기능을 핵심 관심사(Core Concern)와 공통 관심사(Cross-cutting Concern)로 나누어 프로그래밍하는 것
핵심 관심사(Core Concern)는 객체가 가져야 할 본래 기능
공통 관심사(Cross-cutting Concern)는 여러 객체에서 공통적으로 사용되는 코드
AOP 구현 방법
- 컴파일 과정에서 삽입
- 바이트코드를 메모리에 로드하는 과정에서 삽입
- 프락시 패턴을 이용하는 방식
AOP에서는 공통 관심사를 별도의 모듈로 분리하여 관리하며, 이를 통해 코드의 재사용 성과 유지 보수성을 높일 수 있습니다.
스프링 프레임워크의 다양한 모듈
스프링 프레임워크는 기능별로 구분된 약 20여 개의 모듈로 구성되어 있다.
모든 모듈을 사용할 필요가 없으며, 필요한 모듈만 선택해서 사용하게끔 설계되어 있다.
이를 경량 컨테이너 설계라고 부릅니다.
'Spring Boot' 카테고리의 다른 글
[Spring Boot] @RestControllerAdvice를 이용한 Spring 예외처리 (0) | 2024.05.21 |
---|---|
[Spring Boot] @Component 어노테이션 (0) | 2024.05.20 |
[Spring Boot] @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor (0) | 2024.05.15 |
[Spring Boot] Spring JPA + Query DSL (0) | 2024.05.13 |
[Spring Boot] 스프링 프레임워크 vs 스프링 부트 (0) | 2024.05.07 |