본문 바로가기
한 주를 마치며

23.07.02) 항해99 2주, 3주 차를 마무리 하며

by NH_club 2023. 7. 2.

● 2주 차

저번 주에 목표했던 1일 1시스템 구현은 실패했다. 정확히 말하면 목표를 바꿨다.

알고리즘 주차가 끝나고, 주특기 주차에 들어오면서 학습 방향을 재설계했기 때문이다.

현재는 Spring 주특기 주차에 들어왔으며, 하나도 모르겠다. 정말.

기술 매니저님과 얘기를 나눈 후 학습 방향을 바꿨다.

주어진 과제를 마무리하고 진도를 맞추려면 구현보단 새로운 지식을 넣고 쌓아가는 것에 초점을 맞췄다.

현재는 강의를 듣고, 과제 제출을 목표로 이번 주를 마무리 할 것 같다.

 

● 3주 차

이렇게 회고하는 방식은 전혀 도움이 될 것 같지 않다. 미래의 내가 도움이 될 만한 것을 기록해야 한다.

그래서 한 주를 보내면서 기술적인 부분이나 제대로 잡히지 않은 개념들을 하루하루 키워드로 남겨놓고, 일요일에 다시 복습하고 기록하는 방향으로 할 것이다.

이번 주 복습 키워드: 옵셔널, DI, IoC

옵셔널
더보기

옵셔널은 자바 8 이상부터 지원하는 기능이다.

탄생 배경은 개발자들의 수명을 단축시켰던 NPE(NullPointerException)로부터 해방시키기 위해 탄생했다.

옵셔널은 자바에서 null을 참조하더라도 NPE를 발생시키지 않는다. 그리고 이 null값을 처리해줄 다양한 메서드를 제공한다. 옵셔널은 잘못 사용하면 성능이 저하되므로 값이 절대 null이 아니라면 옵셔널의 사용을 지양해야 한다.

값이 null이 될 수 있고, 그 값으로 인해 오류가 발생할 가능성이 높을 때만 사용되어야 한다.

DI
더보기

DI(Dependency Injection)는 의존성 주입이라고 하는 디자인 패턴이다.

여기서 의존성은 한 객체가 다른 객체 없이는 제대로 동작할 수 없는 상황을 말한다. 예를 들어, 자동차는 엔진 없이는 움직일 수 없으므로 자동차는 엔진에 의존하고 있다고 볼 수 있다. 주입은 한 객체가 다른 객체를 직접 만들지 않고, 외부에서 만들어진 객체를 받아서 사용하는 것을 말한다. 이를 통해 객체 간의 결합도를 낮추고 코드의 유연성을 높일 수 있다.

직접 engin 객체를 생성하는 것이 아닌 engin을 주입 받아서 사용하는 것이다. 

그렇다면 engin은 누가 생성 하는 것일까?

Spring 프레임워크는 객체를 생성하고 관리하는 역할을 해준다.

Bean은 Spring이 관리하는 객체이고, 이 Bean들을 모아둔 컨테이너가 Spring IoC 컨테이너 이다.

서버가 실행될 때 engin을 Bean으로 등록되어 있다면, engin이 주입될 때, IoC컨테이너에서 engin이라는 Bean 객체를 찾아 생성시켜 준다.

IoC
더보기

IoC는 제어의 역전 이라는 원칙이다. 개발자가 직접 프로그램의 흐름을 제어하는 것이 아니라, 프레임 워크나 컨테이너가 그 역할을 대신하게끔 하는 원칙이다. 

'한 주를 마치며' 카테고리의 다른 글

한 주를 마치며..  (0) 2023.07.24
23.07.09) 한 주를 마치며  (0) 2023.07.09
23-06-18 항해 99 1주 차를 마무리하며  (0) 2023.06.18