# 2022.11.23

## 할일 및 한일&#x20;

* [x] 스프링 강의 수강 및 공부&#x20;
* [x] gihub 협업 연습&#x20;

## 경험 및 배움&#x20;

오늘은 오후까지 예비군을 다녀오고, 저녁 개인공부를 진행하였다.

### 스프링 강의 수강 및 공부&#x20;

오늘은 `AppConfig` 코드를 리팩터링 후, 순수 자바 코드만을 이용하여 코드를 짰었는데 스프링을 이용하여 변경해보았다.

또한 **IoC(제어의 역전), DI, DIP의 차이점**에 대해 찾아보았다. 공부를 하다 보니 세 가지의 용어가 비슷한 것 같아서 잘 구별이 되지 않아 헷갈렸다.

우선 IoC의 대표적인 예시로써는 프레임워크와 라이브러리가 존재한다.

두 가지의 차이점은,

* 프레임워크가 **내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크**
* 반면에 **내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그것은 프레임워크가 아니라 라이브러리**

인데, 이렇게 라이브러리를 사용할 때는 내 코드가 라이브러리를 호출하지만, 반대로 프레임워크를 사용할 때는 프레임워크가 내 코드를 호출하니 제어의 역전이라고 볼 수 있다고 한다.

또한 **DI(의존 관계 주입)**&#xC740; 구성 요소 간의 관계가 내부가 아닌, 외부에서 결정되게 하는 것으로 대표적인 예로 `@Autowired` 와 생성자를 통한 의존 관계 주입이 있다.

<figure><img src="https://554097319-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXOFWKNTyvL7RYCd4zX33%2Fuploads%2FKFHhmjtTxXmukd34Mp3r%2Fimage.png?alt=media&#x26;token=3b9d04b3-c429-49fe-8d6c-19554d21386c" alt=""><figcaption></figcaption></figure>

마지막으로는 **DIP(의존관계 역전 원칙)**&#xC740; 추상화에 의존하고, 구체화에는 의존하지 않는 것이 좋다라는 의미를 갖고 있다.

세 용어는 다시 한번 자세히 정리하여 블로그에 포스팅할 예정이다.

### github 협업 연습&#x20;

캡스톤 디자인(졸업 작품)을 시작하면서, 협업에 대한 필요성을 느끼게 되었다.

따라서 organization을 생성하고, 팀원들을 구성하여 Pull Request, Merge 등을 연습중이다.

{% embed url="<https://github.com/Jinwon-Dev/backend>" %}

## 개선 및 목표&#x20;

* 내일은 전공 시험 대비, 그리고 스프링 강의를 수강하자.&#x20;
