** 김영한님의 인강을 듣고 정리했습니다.

👉스프링
- 자바 언어 기반의 프레임워크
- 자바 언어의 가장 큰 특징(객체지향언어)
- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
- 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
👉객체지향
- 추상화
- 캡슐화
- 다형성
- 상속
👉좋은 객체 지향 설계의 5가지 원칙(SOLID)
: 객체 지향 프로그래밍(OOP)에서 유지보수성과 확장성을 높이기 위한 5가지 설계 원칙
- SRP : 단일 책임 원칙(클래스는 하나의 책임만 가져야 한다)
- OCP : 개방-폐쇄 원칙(기존 코드 수정 없이 새로운 기능을 추가할 수 있어야 한다.)
- LSP : 리스코프 치환 원칙(자식 클래스는 부모 클래스를 대체할 수 있어야 한다.)
- ISP : 인터페이스 분리 원칙(클라이언트가 사용하지 않는 인터페이스에 의존하지 않아야 한다.)
- DIP : 의존관계 역전 원칙(구체적인 클래스가 아니라, 추상화된 인터페이스에 의존해야 한다.)

👉스프링 컨테이너와 스프링 빈
BeanFactory
- 스프링 컨테이너의 최상위 인터페이스다.
- 스프링 빈을 관리하고 조회하는 역할을 담당한다.
- getBean()` 을 제공한다.
- 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다.
ApplicationContext
- BeanFactory 기능을 모두 상속받아서 제공한다.
- 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데, 그러면 둘의 차이가 뭘까?
- 애플리케이션을 개발할 때는 빈을 관리하고 조회하는 기능은 물론이고, 수 많은 부가기능이 필요하다.
| 비교 항목 | 전통적인 방식 (직접 객체 생성) | IoC 적용 방식 (의존성 주입) |
| 객체 생성 | new 키워드로 직접 생성 | 외부에서 주입받음 (DI) |
| 결합도 | 높음 (강한 결합) | 낮음 (느슨한 결합) |
| 테스트 용이성 | 테스트 어려움 | 가짜 객체(Mock) 주입 가능 |
| 유연성 | 변경 시 직접 코드 수정 필요 | 인터페이스 변경만으로 쉽게 교체 가능 |
| 프레임워크 적용 | 없음 | Spring IoC 컨테이너가 관리 |
'Back-End > SpringBoot' 카테고리의 다른 글
| 기본 crud 만들기2 (1) | 2025.07.22 |
|---|---|
| 기본 crud 만들기 (0) | 2025.07.20 |
| SQL Injection (0) | 2023.08.27 |
| Model과 @ModelAttribute @RequestParam (0) | 2023.08.27 |
| 스프링 import & export 방법, import 에러 해결 (0) | 2023.08.20 |