Spring 프레임워크는 자바(Java) 기반의 오픈 소스 애플리케이션 프레임워크로, 대규모 웹 애플리케이션 개발을 효율적이고 유연하게 할 수 있도록 다양한 기능을 제공합니다. 스프링은 객체 지향 설계 원칙(OOP)을 따르면서도 코드의 결합도를 낮추고, 테스트하기 쉽고, 유지보수하기 쉬운 애플리케이션을 만들 수 있게 해줍니다.
🔹 Spring 프레임워크의 핵심 특징
특징 설명
| 경량 프레임워크 | 필요한 모듈만 선택적으로 사용할 수 있어 유연하고 가볍습니다. |
| 제어의 역전 (IoC) | 객체 생성과 의존성 주입을 스프링이 대신 관리해줍니다. (Dependency Injection) |
| 관점 지향 프로그래밍 (AOP) | 공통 기능(로깅, 보안, 트랜잭션 등)을 핵심 로직과 분리해서 작성 가능하게 합니다. |
| 모듈화 구조 | 여러 하위 모듈(Spring MVC, Spring JDBC, Spring Security 등)로 구성되어 필요에 따라 사용 가능합니다. |
| DI (Dependency Injection) | 객체 간 의존성을 코드가 아닌 설정을 통해 주입할 수 있도록 합니다. |
| POJO 기반 개발 | Plain Old Java Object, 일반 자바 클래스를 그대로 사용할 수 있게 해줍니다. |
🔸 Spring의 주요 모듈
모듈 설명
| Spring Core | IoC/DI 컨테이너 제공 (스프링의 핵심 기능) |
| Spring AOP | AOP 기능 제공 |
| Spring JDBC / ORM | 데이터베이스 연동 지원 (MyBatis, JPA 등과 연동) |
| Spring MVC | 웹 애플리케이션 개발 지원 (Model-View-Controller 패턴) |
| Spring Security | 인증/인가, 보안 기능 제공 |
| Spring Boot | 설정을 최소화하여 빠르게 스프링 애플리케이션을 구축할 수 있게 해주는 프레임워크 |
| Spring Data JPA | JPA를 쉽게 사용할 수 있도록 도와주는 모듈 |
🔹 스프링의 작동 방식 간단 예시
@Component
public class MyService {
public void doSomething() {
System.out.println("Service 실행 중");
}
}
@RestController
public class MyController {
@Autowired
private MyService myService;
@GetMapping("/run")
public String run() {
myService.doSomething();
return "실행 완료!";
}
}
- @Component, @RestController : 스프링이 이 클래스를 관리하게 해줌 (Bean 등록)
- @Autowired : 스프링이 MyService 객체를 자동으로 주입해줌 (DI)
- @GetMapping("/run") : HTTP 요청 URL에 매핑
🔸 스프링이 왜 중요한가요?
- 생산성 향상: 다양한 기능을 제공해 빠르게 애플리케이션을 개발할 수 있음
- 유지보수 용이: 느슨한 결합 구조 덕분에 코드 수정이 쉬움
- 테스트 용이성: 의존성 주입으로 유닛 테스트 작성이 쉬움
- 대규모 시스템에 적합: 모듈화된 구조 덕분에 확장성과 재사용성이 높음
🔹 스프링의 발전: Spring → Spring Boot
기존 Spring은 설정이 많고 복잡했지만,
Spring Boot는 "자동 설정(Auto Configuration)", "내장 톰캣", "의존성 관리" 등을 통해 개발자가 빠르게 시작할 수 있도록 돕습니다.
'탐구하기' 카테고리의 다른 글
| Dependency Injection는 무엇일까? (0) | 2025.05.22 |
|---|---|
| POJO란 무엇인가? (3) | 2025.05.20 |
| WAS란 무엇일까? (1) | 2025.05.19 |
| 클라이언트-서버 구조에 흐름과 장단점 (1) | 2025.05.15 |
| HTTP는 무엇일까?? (0) | 2025.05.14 |