[Spring (1)] 개념 (Day 47)

코딩기록·2024년 12월 12일

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;
 // 여기서 이렇게 저수준 모듈인 USBCharger를 사용해 버리면
 // USBCharger를 다른 클래스로 바꾸려면
 // EletronicDevice 코드 자체를 바꿔야 된다.
// 이렇게 하지 말고 private Charger  이런 식으로 인터페이스로 가져와라. 그래야 확장성이 있다.
 ...이하 생략...

3. IoC, DP

1. IoC

  • 제어의 역전

2. DI

  • 의존성 주입(객체가 자신이 필요로 하는 다른 객체를 외부에서 주입받는 설계 패턴)
  • IoC의 구현방법

0개의 댓글