스프링 아키텍처 (Spring Architecture)
스프링 프레임워크는 다양한 컴포넌트와 모듈로 구성되어 있으며, 개발을 간소화하고 유연하게 만들어준다.
스프링은 다음과 같은 주요 구성 요소와 모듈을 가지고 있다.
스프링(Spring) 주요 요소
1. IoC (Inversioin of Control) 컨테이너
IoC 컨테이너는 스프링의 핵심 컴포넌트로 객체를 생성하고 의존성을 주입하며 객체의 생명주기를 관리한다.
- BeanFactory : 기본 IoC 컨테이너로 빈의 생성과 의존성 주입을 담당
- ApplicationContext : BeanFactory 기능에 추가로 더 많은 기능을 제공하며, 스프링의 고급 기능들을 지원
2. AOP (Aspect-Oriented Programming)
AOP는 횡단 관심사(cross=cutting concerns)를 모듈화하는 패러다임이다.
AOP를 사용하면 로깅, 트랜잭션 관리, 보안 등 공통 기능을 비즈니스 로직과 분리하여 관리할 수 있다.
- Aspect : 횡단 관심사를 캡슐화한 모듈
- Join Point : Aspect가 적용될 수 있는 지점
- Advice : Aspect가 Join Point에서 실행되는 코드
- Pointcut : Advice가 적용될 Join Point를 정의하는 표현식
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
// 1. Aspect : @Aspect 어노테이션을 사용하여 해당 클래스가 Aspect임을 표시
// @Component 어노테이션을 통해 스프링의 Bean으로 등록
@Aspect
@Component
public class LoggingAspect {
// 2. Join Point : Advice가 적용될 수 있는 지점 정의
// com.example.service 패키지 내의 모든 메서드 호출이 Join Point
// 3. Advice : @Before 어노테이션을 사용하여 Joint Point에서 실행될 코드 정의
// 메서드 호출 전에 로깅 수행
// 4. Pointcut : Advice가 적용될 Koint Point 정의
// com.example.service 패키지 내의 모든 메서드에 대해 로깅 적용
@Before("execution(* com.example.service.*.*(..))")
public void logBeforeMethod(JoinPoint joinPoint) {
// 메서드 호출 전 로깅
System.out.println("Executing: " + joinPoint.getSignature().getName());
}
}
3. MVC 웹 프레임워크
스프링 MVC는 웹 애플리케이션의 구조를 정의하는 모듈로 Model - View - Controller 패턴을 기반으로 한다.
- DispatcherServlet : 모든 요청을 중앙에서 처리하고 요청을 적절한 컨트롤러로 전달
- Controller : 사용자 요청을 처리하고 모델과 뷰를 반환
- Model : 비즈니스 데이터를 담고 뷰에 전달
- ViewResolver : 논리적 뷰 이름을 실제 뷰로 전달
스프링(Spring) 모듈
1. 스프링 부트 (Spring Boot)
스프링 부트는 스프링 애플리케이션의 설정과 구성을 자동화하고 빠르게 개발할 수 있도록 돕는 도구이다.
- Auto-Configuration : 애플리케이션의 설정을 자동으로 구성
- Starter Projects : 자주 사용되는 기능을 미리 구성하여 개발 단순화
- 내장 웹 서버 : Tomcat, Jetty 등을 내장하여 별도의 서버 설치 없이 애플리케이션 실행
2. 스프링 클라우드 (Spring Cloud)
스프링 클라우드는 클라우드 네이티브 애플리케이션을 개발하기 위한 도구와 패턴을 제공한다.
- 서비스 등록 및 발견 : 서비스 레지스트리와 디스커버리 기능 제공
- 구성 관리 : 중앙 집중식 구성 관리 기능 제공
- 회로 차단기 : 서비스 장애를 관리하고 회복성 향상
3. 스프링 데이터 (Spring Data)
스프링 데이터는 데이터 접근 기술을 추상화하여 다양한 데이터 저장소와 통합한다.
- JPA : 자바 퍼시스턴스 API를 통한 데이터 접근 지원
- NoSQL : NoSQL 데이터베이스와의 통합 지원
- JDBC : JDBC를 통한 데이터베이스 작업 단순화
4. 스프링 시큐리티 (Spring Security)
스프링 시큐리티는 애플리케이션의 보안을 강화하는 모듈이다.
- 인증 : 사용자 인증 관리
- 권한 부여 : 사용자의 접근 권한 제어
- 보안 설정 : 애플리케이션의 보안 구성
'Framework > Spring' 카테고리의 다른 글
[Spring] 06. 스프링(Spring) MVC (0) | 2024.08.21 |
---|---|
[Spring] 05. 스프링(Spring) 개발 환경 구축 - 라이브러리 설정 (0) | 2024.08.21 |
[Spring] 04. 스프링(Spring) 개발 환경 구축 - 프로젝트 생성 및 실행 (0) | 2024.08.21 |
[Spring] 03. 스프링(Spring) 개발 환경 구축 - 필수 소프트웨어 설치 (0) | 2024.08.21 |
[Spring] 01. 스프링 프레임워크(Spring Framework)란? (0) | 2024.08.19 |