1. 스프링이란❓
- Java를 좀 더 객체지향적으로 사용하기 위한 Java 프레임 워크
- FYI. 프레임워크란? 개발에서 사용되는 표준 구조 및 규칙(라이브러리, 패턴, 규칙, 설정 등) 을 담은 것
- FYI. 프레임워크 VS 라이브러리 : 프레임워크는 어노테이션, 설정 파일 등을 사용하여 객체 생성, 라이브러리 관리 등의 어플리케이션 흐름을 프레임워크가 관리. 라이브러리는 개발자가 관리.
2. SOLID 객체지향
1. SRP - Single Responsibility Principle (단일 책임 원칙)
- 클래스는 하나의 기능이나 역할만 담당해야 한다.
2. OCP - Open/Closed Principle (개방/폐쇄 원칙)
- 확장에 열려 있고, 수정에 닫혀 있어야 한다.
- 코드를 수정하지 않고도 새로운 기능을 쉽게 추가할 수 있다
- 아래 5번 예시라 OCP도 위반하는 예시임
3. LSP - Liskov Substitution Principle (리스코프 치환 원칙)
- 자식 클래스가 부모 클래스의 메서드를 동일한 역할로 수행할 수 있어야 한다
- 예를 들어 부모 클래스에서 eat()를 먹는 동작이라고 규정했는데, 자식 클래스에서 eat() 구현내용에 잠자는 내용까지 포함하면 안 됨
4. ISP - Interface Segregation Principle (인터페이스 분리 원칙)
- 하나의 인터페이스가 하나의 역할이나 책임만 가지도록 함
5. DIP - Dependency Inversion Principle (의존성 역전 원칙)
- 고수준 모듈이 저수준 모듈에 의존해서는 안 되고, 둘 다 추상화에 의존해야 한다는 원칙
public class USBCharger {
public void charge() {
System.out.println("Charging via USB");
}
}
public class ElectronicDevice
{ private USBCharger charger;
...이하 생략...
3. IoC, DP
1. IoC
2. DI
- 의존성 주입(객체가 자신이 필요로 하는 다른 객체를 외부에서 주입받는 설계 패턴)
- IoC의 구현방법