Skip to content

ohk8/web-project-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

자바 백엔드 공부 기록

  • 브랜치: main, develop, spring-basic

좋은 객체지향 설계

SRP 단일 책임 원칙

한 클래스는 하나의 책임만 가져야 한다.

DIP 의존관계 역전 원칙

프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다."
의존성 주입은 이 원칙을 따르는 방법 중 하나다.
  • AppConfig 작성

OCP

소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
  • AppConfig 변경으로 사용영역 변경

IOC

클라이언트 구현 객체가 스스로 필요한 서버 구현객체를 생성하고, 연결하고, 실행함
AppConfig가 등장한 이후 구현 객체는 자신의 로직을 실행하는 역할만 담당
OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현객체들이 실행될지는 모름
프로그램에대한 제어흐름에 대한 권한은 AppConfig가 가지고있다.
프로그램의 제어흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전이라고 함
  • 프레임워크 / 라이브러리
    • 프레임워크 : 내가 작성한 코드를 제어, 실행
    • 내가작성한 코드가 직접제어의 흐름을 담당하면 라이브러리

DI

OrderServiceImpldms DiscountPolicy인터페이스에 의존한다.
실제 어떤 구현객체가 사용될지는 모른다.

의존관계는 정적인 클래스 의존관계와, 실행시점에 결정되는 동적인 객체(인스턴스) 의존관계 둘을 분리해서 생각해야한다.

  • 정적

    • import로 확인 가능
  • 동적

    • 실행시점(런타임)에 알 수 있는 실제 구현객체
    • 애플리케이션 실행시점(런타임) 외부에서 실제구현객체를 생성하고 클라에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계주입이라간다.
    • 정적다이어그램을 손대지않고(다이어그램은 그대로)

IOC 컨테이너, DI 컨테이너

  • AppConfig 처럼 객체 생성 하고 의존관계 연결해주는 것을 IOC컨테이너, DI컨테이너라고함
  • 요즘엔 DI 컨테이너라고들 함

  • bean이름을 직접 부여해도 됨
  • bean이름은 항상 다른이름을 부여해야함

  • BeanFactory와 ApplicationContext의 차이?
  • ApplicationContext는 BeanFactory를 상속

  • MessageSourcefmf 활용한 국제화기능

  • 환경변수

About

java spring backend

Resources

Stars

Watchers

Forks

Contributors

Languages