프로그래밍 공부
Spring 전체 구조 알아보기(주요 모듈) 및 정리 본문
Spring 에 대해
Spring은 대규모 엔터프라이즈 애플리케이션을 효율적으로 개발하기 위한 프레임워크로,
유연하고 확장성이 뛰어난 모듈화된 구조를 가지고 있다.
1. Spring 프레임워크란?
Spring 프레임워크(Spring Framework)는 자바 기반 엔터프라이즈 애플리케이션 개발을 위한 경량 컨테이너다.
주요 특징은 다음과 같다.
✔ 경량 컨테이너: IoC/DI를 활용하여 객체를 효율적으로 관리
✔ AOP 지원: 공통 기능을 분리하여 코드 중복을 줄임
✔ 트랜잭션 관리: 일관된 트랜잭션 관리 기능 제공
✔ 다양한 기술과 통합 가능: JPA, Hibernate, MyBatis, RabbitMQ, Kafka 등 다양한 기술과 호환
2. Spring의 주요 모듈
Spring은 필요한 기능을 모듈화하여 제공하며,
핵심적인 코어(Core) 모듈과 웹(Web) 모듈, 데이터(Data) 모듈 등으로 구성된다.
(1) Spring Core 모듈 (필수)
모듈 설명
Spring Core | IoC/DI(의존성 주입)를 통한 객체 관리 |
Spring Beans | 빈(Bean)의 라이프사이클과 DI 기능 제공 |
Spring Context | 다양한 설정(XML, Java Config) 및 애플리케이션 컨텍스트 제공 |
Spring Expression Language (SpEL) | 객체 그래프를 탐색하고 조작할 수 있는 표현식 언어 |
📌 핵심 개념:
- IoC(Inversion of Control): 객체 생성 및 관리를 스프링 컨테이너가 담당
- DI(Dependency Injection): 객체 간의 의존성을 설정 파일이나 어노테이션으로 주입
(2) Spring AOP & Aspects 모듈
모듈 설명
Spring AOP | 관점 지향 프로그래밍(AOP)을 지원 |
Spring Aspects | AspectJ와 통합하여 AOP 기능 강화 |
📌 AOP(Aspect-Oriented Programming)란?
- 로깅, 보안, 트랜잭션 등 공통 기능을 모듈화하여 코드 중복을 줄이는 기술
- 예: @Transactional, @Aspect 등을 활용
(3) Spring Data Access & Integration 모듈
모듈 설명
Spring JDBC | JDBC API를 더 쉽게 사용할 수 있도록 지원 |
Spring ORM | Hibernate, JPA, MyBatis 등과 통합 지원 |
Spring Transaction | 선언적 트랜잭션 관리 지원 |
Spring Messaging | 메시지 브로커(Kafka, RabbitMQ) 연동 |
📌 JPA 사용 예제 (Spring Data JPA)
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
(4) Spring Web & MVC 모듈
모듈 설명
Spring Web | 기본적인 웹 애플리케이션 개발 지원 |
Spring Web MVC | Spring MVC 아키텍처 기반 웹 애플리케이션 개발 |
Spring WebFlux | 리액티브 프로그래밍 지원 (비동기/논블로킹) |
📌 Spring MVC 컨트롤러 예제
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return ResponseEntity.ok(userService.getUserById(id));
}
}
(5) Spring Security & Testing 모듈
모듈 설명
Spring Security | 인증 및 인가(로그인, 권한 관리) 지원 |
Spring Test | 단위 테스트 및 통합 테스트 지원 |
📌 Spring Security 설정 예제
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
.formLogin();
return http.build();
}
}
3. Spring Boot vs Spring Framework
비교 항목 Spring Framework Spring Boot
설정 방식 | XML, Java Config 필요 | 설정 최소화 (자동 설정) |
내장 서버 | 별도 설정 필요 | 기본적으로 내장 Tomcat 제공 |
종속성 관리 | 개별 라이브러리 추가 | spring-boot-starter 사용 |
배포 방식 | WAR 파일로 배포 | 실행 가능한 JAR 파일로 배포 |
📌 Spring Boot는 Spring Framework를 기반으로 개발을 편리하게 만든 프레임워크다.
4. Spring의 주요 프로젝트
Spring은 핵심 프레임워크 외에도 다양한 확장 프로젝트를 제공한다.
프로젝트 설명
Spring Boot | 설정이 간편한 Spring 개발 환경 제공 |
Spring Cloud | 마이크로서비스 아키텍처(MSA) 지원 |
Spring Data | JPA, NoSQL, Redis, MongoDB 연동 |
Spring Security | 인증/인가, OAuth2, JWT 지원 |
Spring Batch | 대량 데이터 처리 배치 시스템 |
Spring WebFlux | 리액티브 웹 애플리케이션 개발 |
5. 결론
✔ Spring은 모듈화된 구조로 필요한 기능만 선택하여 사용할 수 있음
✔ Spring Boot를 사용하면 설정을 최소화하여 빠르게 애플리케이션을 개발 가능
✔ Spring Cloud 등 확장 프로젝트를 활용하면 마이크로서비스 및 대규모 시스템 구축 가능
'Programming > Spring' 카테고리의 다른 글
Spring Boot를 사용하여 Hello World API 빌드하기 (0) | 2025.02.11 |
---|---|
Spring Boot를 사용하는 이유와 스프링 프레임워크와의 차이 (0) | 2025.02.11 |
스테레오 타입 어노테이션(Stereotype Annotation) (0) | 2025.02.10 |
Java Spring XML 설정 (0) | 2025.02.10 |
Spring Bean Scope (0) | 2025.02.10 |