| 개념 | 설명 |
|---|---|
| IoC (Inversion of Control) | 객체의 생성·관리를 개발자가 아닌 스프링이 담당 |
| DI (Dependency Injection) | 필요한 객체를 직접 생성하지 않고 외부에서 주입받음 |
| AOP (Aspect Oriented Programming) | 공통 기능(로깅, 트랜잭션 등)을 핵심 로직에서 분리하여 모듈화 |
이 세 가지 개념을 통해 유연한 구조와 테스트 가능한 애플리케이션을 만들 수 있음.
##2. 애플리케이션 구조 간단 이해

사용자 입력 (Input)
↓
[ Controller ]
↓
[ Service]
↓
[ Repository / DB ]
↓
응답 데이터 (Output)
스프링은 웹 개발 시 MVC 패턴(Model-View-Controller) 을 기반으로 동작.
| 구성요소 | 역할 | 예시 |
|---|---|---|
| Model | 데이터 처리 영역 (DB, DAO, DTO) | 검색 키워드로 상품 목록 조회 |
| View | 화면 구성 영역 (HTML, Thymeleaf, React 등) | 상품 리스트 화면 |
| Controller | 사용자 요청 처리 및 흐름 제어 | 사용자의 검색 요청 처리 |
[ 사용자의 요청 ]
↓
Controller (요청 수신, 처리 흐름 제어)
↓
Model (DB 조회/처리)
↓
View (결과 출력)
EX: 게임에서 '이동' 버튼을 누르면 캐릭터가 움직이는 것도 하나의 API
| 동작 | HTTP Method |
|---|---|
| 데이터 조회 | GET |
| 데이터 생성 | POST |
| 데이터 수정 | PUT / PATCH |
| 데이터 삭제 | DELETE |
| Method | 설명 |
|---|---|
| GET | 리소스 조회 |
| POST | 리소스 생성 |
| PUT | 리소스 전체 수정 |
| PATCH | 리소스 일부 수정 |
| DELETE | 리소스 삭제 |
| 어노테이션 | 설명 |
|---|---|
@SpringBootApplication | 스프링 부트 진입점, 자동 설정 포함 |
@RestController | JSON 응답용 컨트롤러 |
@Controller | 뷰 반환용 컨트롤러 |
@Service | 비즈니스 로직 담당 클래스 |
@Repository | DB 접근 클래스 |
@Autowired | 의존성 주입(DI) |
@GetMapping, @PostMapping 등 | URL + 메서드 매핑 |
@RequestBody | 요청 JSON을 자바 객체로 바인딩 |
@ResponseBody | 자바 객체를 JSON으로 응답 |
@PathVariable, @RequestParam | URL 경로/쿼리 파라미터 추출 |