[스프링 프레임워크의 핵심 개념]
- 종속성 주입(DI):
- 정의: 종속성 주입은 객체를 내부적으로 생성하는 대신 외부에서 종속성을 제공할 수 있도록 하는 디자인 패턴입니다. 이는 느슨하게 결합된 애플리케이션을 구축하는 Spring 접근 방식의 기본입니다.
- Spring에서 작동하는 방식: Spring에서는 객체(빈이라고도 함)가 Spring 컨테이너에 의해 생성되고 관리됩니다. 필요할 때 컨테이너에 의해 자동으로 이러한 Bean에 종속성이 주입됩니다.
- 이점: DI는 코드를 더욱 모듈화하고 테스트하기 쉽게 하며 변경 사항에 적응할 수 있게 해줍니다.
- 관점 지향 프로그래밍(AOP):
- 정의: AOP는 교차 관심사를 분리하여 모듈성을 높이는 것을 목표로 하는 프로그래밍 패러다임입니다. 코드 자체를 수정하지 않고 기존 코드에 추가 동작을 추가하면 됩니다.
- Spring의 애플리케이션: Spring AOP를 사용하면 로깅, 트랜잭션 관리 또는 보안과 같은 측면을 기본 애플리케이션 로직과 별도로 선언할 수 있습니다. 그런 다음 이러한 측면을 선언적으로 또는 프로그래밍 방식으로 애플리케이션 흐름에 통합할 수 있습니다.
- 이점: AOP는 깔끔한 코드를 유지하는 데 도움이 되고 문제 분리를 촉진하여 코드 유지 관리성을 향상시킵니다.
- 스프링 모듈:
- Spring Core Container: 프레임워크의 기반으로 IoC 컨테이너를 제공합니다.
- Spring AOP 모듈: Spring의 메소드 가로채기를 포함한 측면 지향 프로그래밍에 대한 지원을 제공합니다.
- Spring 데이터 액세스/통합: JDBC, Hibernate, JPA 등과 같은 데이터 액세스 기술을 단순화합니다.
- Spring 웹 모듈: 웹 애플리케이션 및 RESTful 웹 서비스를 생성하기 위한 프레임워크입니다.
- Spring MVC: 웹 애플리케이션 구축을 위한 모델-뷰-컨트롤러 프레임워크입니다.
- Spring Boot: 독립 실행형 프로덕션 등급 Spring 기반 애플리케이션의 개발을 단순화합니다.
- Spring Security: Java 애플리케이션을 위한 포괄적인 보안 서비스를 제공합니다.
- Spring Cloud: 클라우드 네이티브 애플리케이션 개발을 위한 도구입니다.
- 봄콩과 용기:
- 빈즈: Spring에서 빈은 애플리케이션의 백본을 형성하는 객체입니다. 이는 Spring IoC 컨테이너에 의해 관리됩니다.
- Spring IoC 컨테이너: Bean 인스턴스화, 구성 및 조립을 담당합니다. 컨테이너는 종속성 주입을 사용하여 애플리케이션을 구성하는 구성 요소를 관리합니다.
- Spring의 이벤트 처리:
- 개요: Spring은 강력한 이벤트 처리 메커니즘을 제공합니다. 애플리케이션 이벤트를 수신하고 응답하기 위해 Observer 디자인 패턴을 따릅니다.
- 사용자 정의 이벤트: 개발자는 Spring 컨텍스트에서 일류 시민으로 취급되는 사용자 정의 이벤트를 생성하고 게시할 수 있습니다.
- SpEL(Spring 표현 언어):
- 목적: 런타임 시 개체 그래프 쿼리 및 조작을 지원하는 강력한 표현 언어입니다.
- 사용 사례: SpEL은 런타임 시 애플리케이션 구성을 쿼리하고 조작하고 조건부 확인 등에 사용됩니다.