IntelliJ
단축키 cheat sheet와 Vim
에디터 명령어 단축키 시트를 프린트 & 코팅하여 책상에 붙여뒀다.(필요할 때마다 종종 보면서 익히려 한다.)
- 클래스 다이어 그램 : 정적인 관계를 표현
- 객체 다이어 그램 : 동적인 관계를 표현
스프링 핵심 원리 - 기본편
강의 중 객체 지향의 원리 적용부분까지 들었다.
다형성
에 기댄 자바 프로그래밍만으로는 지킬 수 없었던, 객체지향의 원칙들(OCP
, DIP
)을 어떻게 지켜낼 수 있는가에 대한 학습을 하였다.
OCP(개방 폐쇄 원칙)
: 확장에는 열려있으나 변경에는 닫혀있어야 한다.
- 허나 여기서 구현 객체를 변경하기 위해서는 클라이언트 코드를 변경해야하는 문제점이 생겼다.
- 다형성을 사용하여 구현하였더라도, OCP 원칙에는 위배된다.
DIP(의존관계 역전 원칙)
: 역할에 의존하게 해야한다.(쉽게 말해 역할 ≒ 인터페이스)
- 인터페이스에 의존한다고는 하나, 구현 클래스에도 의존 중인 상황이다.
- 따라서 DIP 원칙에 위배된다.
- 애플리케이션의 전체 동작 방식을 구성하기 위하여,
구현 객체를 생성 및 연결하는 책임
을 갖는 별도의 설정 클래스(AppConfig
)를 통하여 코드를사용영역
과구성영역
으로 분리한다.- 이 때를 생성자를 통해서 주입(연결)하여 준다고 하여
생성자 주입
이라고 한다.- 이로 인하여 의존 관계에 대한 고민은 외부에 맡기고 실행에만 온전히 집중할 수 있는 영역이 형성됐다.
- 이러한 변동사항을 통틀어 의존관계 주입(또는 의존성 주입)이라고 일컫는다. (의존 관계를 마치 외부에서 주입해주는 것과 같아 그렇게 부른다고 한다.)
Gradle 의존성 옵션
에 꽂혀 멤버들이 궁금해하지 않는데도 채팅창에 링크를 남발해버렸다.. 스프링 핵심원리 - 기본편
.. 내일 다 들을 수 있으면 좋겠다!)developmentOnly
에 대한 설명 (근데 솔직히 develop이 어떤 의미를 갖는지, 어느 영역까지 커버하는지 감이 오질 않는다...)
- Creates a configuration named developmentOnly for dependencies that are only required at development time, such as Spring Boot’s Devtools, and should not be packaged in executable jars and wars.
- Creates a configuration named productionRuntimeClasspath. It is equivalent to runtimeClasspath minus any dependencies that only appear in the developmentOnly configuration.