카테고리 없음

WIL 지옥코딩 4주차 회고

7th crunch Tutorial participant 2022. 5. 30. 01:58

솔직히 금요일부터 시작된 숙련주차의 과제에 매몰되어 있다보니까

저번주에 뭘 했었는지 기억이 잘 안난다

 

분명 과제를 어떻게 어떻게 해서 내기는 했는데 그렇게 어렵지는 않았던것 같기도 하다

주특기 기초 주차의 주된 도전과제는 API를 활용하는 과정에서 repository, service, controller의 역할을 이해하고

이해를 바탕으로 실제 자신이 원하는 기능의 API를 설계하고 작동하도록 코딩하는 것이 주를 이뤘다

 

분명 그랬어야 하는데 실제로 Spring 반이 맞딱뜨린 최대의 도전은 프론트엔드 지옥의 길이었다

 

아무튼 그런 일들은 모두 차치하고 중요한 키워드 설명

 

DI

보통 우리가 생각하기에 요리사는 레시피들을 알고 있어야 한다고 생각하는데

자바의 클래스 적으로 상상해본다면 요리사라는 클래스의 기억이라는 내면에 레시피를 가지고 있어야 한다

레시피는 요리사의 멤버변수가 되고 생성자를 통해서 요리사는 요리들을 찍어낸다 

 

하지만 이렇게되면 한 요리사의 내면의 기억속에 있는 멤버변수로서의 레시피들은

영원히 외로운 요리사의 내면 속에서만 존재하는 것이 되고 다른 요리사들은 이 레시피를 알수 없거나

스스로의 내면에 각자의 레시피를 고수할 수밖에 없게 된다

 

의존성 주입이라는 것은 말하자면 요리사의 기억을 넘어 별개로 외부에 존재하는 레시피를

인터넷이나 책을 통해서 배우는 것에 빗대어 상상해 볼 수 있다. 레시피가 요리사의 내면에만 존재하는 것이 아니라

외부의 레시피를 가져와서 그 레시피대로 요리를 만드는 것을 의존성 주입으로 표현해 볼 수 있지 않을까

 

즉 서로 다른 여러 클래스들 사이에서 다른 인스턴스의 레퍼런스들을 인터페이스 타입의 파라미터로 의존관계를 설정하는 것! 이라고 한다... 뭔가 말이 어려워

 

IoC

제어의 역전이란, 위의 의존성처럼 서로다른 객체들이 레퍼런스 참조가 되어 있을때, 이러한 의존관계나 오브젝트의 생성, 삭제, 관계설정,  사용등의 기능에 관련된 전반의 것들을 프레임워크의 컨테이너를 두어 그 안에서 프레임 워크가 직접 관리하도록 관리권한을 부여하는 것을 말한다

 

제어의 역전을 통해서 직접 코딩을 하는 사용자는 객체의 생성들과 삭제등에 관련된 작업을 직접 하지 않아도 되면서 훨씬더 효율적으로 코딩을 할 수 있게 된다

 

Bean

어떤 객체가 다른 클래스들 간에서 범용적으로 활용되기 위해서는 소스코드의 별다른 수정 없이 다른 프로젝트에서도 즉시 재사용이 가능할 정도의 의존성이 낮은 객체여야 하며 이런 객체를 component라 할 수 있고 이러한 것들 중에서 프로젝트에서 활용하기 위해서 프레임워크의 컨테이너에 등록해서 관리되는 객체들을 Bean이라고 부른다