✅ SOLID 원칙
Single Responsibility Principle(단일 책임 원칙)
"클래스는 단 하나의 책임만 가져야 한다”
Open/Closed Principle(개방/폐쇄 원칙)
"클래스는 확장에는 열려있고, 수정에는 닫혀있어야 한다”
Liskov Substitution Principle(리스코프 치환 원칙)
"자식 클래스는 부모 클래스를 대체할 수 있어야 한다”
Interface Segregation Principle(인터페이스 분리 원칙)
"클라이언트는 자신이 사용하지 않는 메서드에 의존하면 안 된다”
Dependency Inversion Principle(의존 역전 원칙)
"고수준 모듈은 저수준 모듈에 의존하면 안 된다. 둘 다 추상화에 의존해야 한다”
IoC/DI
IoC: Spring이 객체의 생성을 제어
DI: Spring이 관리 하는 객체를 가져와서 의존성 주입
Bean
스프링 IoC 컨테이너가 관리하는 객체를 의미합니다.
스프링 IoC Container
- Bean의 생성 및 생명주기 관리
- 의존성 주입 (DI)
- Bean 설정 정보 관리
- Bean 간의 의존 관계 설정
IoC/DI 사용 전 (BF)
@Service public class UserService { private final UserRepository userRepository = new UserRepository(...); }
IoC/DI 사용 후 (AF)
@Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; }놀랍게도 이미 사용하고 있었던 거임 ㄷㄷ
Spring에서 IoC/DI vs new 사용 기준
기준: "재사용되거나 교체 가능한 비즈니스 로직/인프라" // ✅ Spring Bean으로 관리 @Service public class UserService { } // 비즈니스 로직 ------------------------------------------------ 기준: "매번 새로운 상태를 가지는 데이터 객체" // ❌ Bean으로 만들면 안 됨! public class User { private String name; private int age; }
@Component
@RestController는 @Controller와 @ResponseBody를 합친 어노테이션이므로, @Component 클래스입니다.
1-4,5 챕터는 이해가 잘 가지 않아서 나중에 작성
Validation
특정 데이터(주로 클라이언트의 요청 데이터)의 값이 유효한지 확인하는 단계를 의미합니다.
