자바 기반의 웹 애플리케이션을 쉽고 빠르게 개발할 수 있도록 도와주는 프레임워크
스프링 프레임워크, 스프링 부트
스프링 데이터, 스프링 세션, 스프링 시큐리티, 스피링 Rest Docs, 스프링 배치, 스프링 클라우드
| 개념 | 설명 |
|---|---|
| IoC (Inversion of Control) | 제어의 역전. 객체 생성과 관리를 개발자가 아닌 스프링이 담당함 |
| DI (Dependency Injection) | 의존성 주입. 필요한 객체를 자동으로 주입받아 사용 |
| AOP (Aspect Oriented Programming) | 관점 지향 프로그래밍. 공통 관심사(로그, 보안 등)를 분리해서 코드에 적용 |
| Bean | 스프링이 관리하는 객체. 설정을 통해 자동으로 생성되고 관리됨 |
| Component Scan | 특정 패키지에서 어노테이션이 붙은 클래스들을 자동으로 등록함 |
| Spring Container | 스프링 애플리케이션을 구동하고, 객체를 관리하는 중심 역할 |
| @Component | 스프링이 자동으로 객체로 등록해주는 클래스에 사용하는 어노테이션 |
| @Autowired | 객체를 자동으로 주입받을 때 사용하는 어노테이션 |
| @Controller / @RestController | 웹 요청을 처리하는 클래스에 사용하는 어노테이션 |
| @Service | 비즈니스 로직을 처리하는 클래스에 사용하는 어노테이션 |
| @Repository | DB 연동 로직을 담당하는 클래스에 사용하는 어노테이션 |
| @Configuration | 설정 클래스를 정의할 때 사용하는 어노테이션 |
| @Bean | 개발자가 직접 스프링 빈을 등록할 때 사용하는 어노테이션 |
| Spring MVC | 웹 애플리케이션을 구성하는 설계 패턴 (Model-View-Controller) |
| Spring Boot | 스프링을 빠르게 개발할 수 있도록 도와주는 도구 (설정 최소화) |

| 구성 영역 | 모듈 | 설명 |
|---|---|---|
| Core Container | Core, Beans, Context, SpEL | 스프링의 핵심 기능: IoC/DI, 빈 생성 및 관리 |
| AOP | AOP, Aspects | 공통 기능(로깅, 트랜잭션 등)을 분리하여 코드에 적용 |
| Web | Web, Web MVC | 웹 어플리케이션 개발 지원 (Spring MVC 포함) |
| Data Access | JDBC, ORM, Transactions | DB 연동, JPA, 트랜잭션 관리 등 |
| Messaging | JMS, Messaging | 비동기 메시지 처리 (RabbitMQ 등) |
| Test | Test | JUnit 등과 연동된 테스트 지원 |
| Others | Cache, Context Support 등 | 유틸리티 기능, 캐싱, 파일 업로드 등 부가 기능 |