코딩과 결혼합니다

230629 - 3Layer Architecture 본문

2세/Spring

230629 - 3Layer Architecture

코딩러버 2023. 6. 29. 22:10
728x90

오늘 시험을 봤다. 

다른 분들은 빠르면 1시간 안에도 풀 수 있는 문제였을지 모르겠지만 나는 거의 4시간을 꽉꽉 채웠다. 

배포를 못하면 원래 감점인데 오류가 있었는지 배포를 안해도 감점을 안하셨다. 그래서 깔끔하게 배포 포기~

어찌저찌 시험을 잘 봤는데 왜 잘 본건지 모르겠는 이 ... 이상한 느낌..

 

기본기가 많이 부족해서 내가 푼 문제도 정확히 어떻게 흘러가는건지 아직 잘 모르겠다고 하니 너무 걱정 말라고 하셨다. 당장은 잘 몰라도 시간이 지나면 자연스럽게 이해를 하게 되고 그렇게 점차 성장해 나가는 거라고! 모든 기본기를 파악하고 가겠다는건 별로 추천하지 않는다고 하셨다. 지금 주어진 과제를 최대한 잘 끝내기 위해서 노력하고 코드를 따라쳐보는 것도 도움이 될 거라 하셨다. 물론 무지성으로 치기보다는 어느정도 왜 이렇게 입력하는지를 파악하면서 말이다.

 

오늘 배운 것

기존의 memo나 blog 만들기의 코드는 controller에 모든 코드를 때려 넣고, 중복되는 코드도 많아서 한 눈에 읽기가 어려웠다. 원래는 시험을 보기전에 익혔어야 할 부분이었는데, 1주차도 이해가 안돼서 차마 넘어갈 수가 없어서 오늘 보게되었다.

 

3Layer Architecture

- controller

- Service

- Repository

로 나누어 효율적으로 API를 처리할 수 있게 함, 코드가 간단해지고 문제 발생도 낮아진다.

 

IoC 와 DI (제어의 역전 과 의존성 주입)

강한의존성 약화시키기 Interface 활용

1. 필드에 주입

2. 메서드를 통한 주입

3. 생성자를 통한 주입

 

강한 결합 해결하기

1. 각 객체에 대한 객체 생성은 딱 한 번만

2. 생성된 객체를 모든 곳에서 재사용

3. 생성자 주입을 사용하며 필요로 하는 객체에 객체 주입

 

IoC Container 와 Bean

Bean : Spring 이 관리하는 객체

Sping IoC Container : 'Bean'을 모아둔 Container

 

코드 이해가 안 가서 하나씩 뜯어보았다.