항해99 회고록 리스트
- [항해99 4기] 1주 차 미니 프로젝트 - WIL
- [항해99 4기] 2주 차 알고리즘 - WIL
- [항해99 4기] 3주 차 주특기 기초(스프링) - WIL
- [항해99 4기] 4주 차 주특기 숙련(스프링) - WIL
- [항해99 4기] 5주 차 주특기 심화(스프링) - WIL
- [항해99 4기] 6주 차 팀 프로젝트(리액트, 스프링) - WIL
- [항해99 4기] 7주 차 팀 프로젝트(클론코딩) - WIL
- [항해99 4기] 8주 차 실전프로젝트 - WIL
- [항해99 4기] 9주 차 실전프로젝트 - WIL
- [항해99 4기] 10주 차 실전프로젝트 - WIL
- [항해99 4기] 11주 차 실전프로젝트 - WIL
- [항해99 4기] 12주 차 실전프로젝트 - WIL
- [항해99 4기] 13주 차 실전프로젝트 - WIL
- [항해99 4기] 14주 차 지원하기 - WIL
# 불평할 시간에 개발 서적 한 장이라도 더 읽자
* 위 제목은 제 자신에게 하는 얘기입니다.
부사관 복무를 할 때 습관이 나왔던 한 주 같습니다.
속해있는 집단에 바라는 것은 많아지고, 그로 인해 의욕은 저하되는 상황이 찾아왔었습니다.
이 습관이 무섭다고 느낀 이유는, 처음에 생각했던 방향성을 틀어지게 만들기 때문입니다.
'꾸준히 가자'라는 생각이 조금씩 무너지게 됩니다.
처음에 가지고 있었던 열정에 찬물이 점점 뿌려지게 되는 것이었습니다.
외국 군대(프랑스 외인부대)를 같이 준비하던 커뮤니티 사람의 말이 계속 떠오르는 한 주였습니다.
"거기(한국 군)에 그렇게 불만이 있으면, 프랑스 외인부대를 가도 똑같이 불만이 생길 것입니다."
이번 주 WIL 키워드
# DI (Dependency Injection)
"의존 대상 B가 변하면, 그것이 A에 영향을 미친다."
- 이일민, 토비의 스프링 3.1 -
즉, B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다.
DI의 특징
- 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입시켜주는 방삭이다.
- DI(의존성 주입)를 통해 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
장난감들은 배터리가 있어야 작동을 한다.
즉 배터리에 의존하고 있다.
장난감들에게 배터리를 넣어주는 것을 의존성 주입이라고 한다.
위 내용을 코드로 만들면 위 사진과 같다.
의존관계 주입 종류
- 생성자 주입
- 수정자 주입(setter)
- 필드 주입
- 일반 메서드 주입
주입의 종류를 코드와 설명은 아래의 링크에 잘 나와 있다.
https://mangkyu.tistory.com/125
# IOC (Inversion of Control)
- 제어의 역전(제어의 흐름을 바꾼다)이라는 의미
- 제어의 역전이란 프로그램의 제어 흐름 구조가 뒤바뀌는 것이라 설명할 수 있다.
- IoC에서는 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하거나 생성하지 않는다.
또한, 자신도 어떻게 만들어지고 어디서 사용되는지를 알 수 없다.
모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문이다. - 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여,
가독성 및 코드 중복, 유지 보수를 편하게 한다.
스프링에서 객체가 만들어지고 실행되는 순서
- 객체 생성
- 의존성 객체 주입
=> 스스로가 만드는 것이 아니라 제어권을 스프링에게 위임한다.
스프링이 만들어놓은 객체를 주입받는다. - 의존성 객체 메서드 호출
# Bean
- 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트
=> 빈 또는 빈 오브젝트라고 불리고 스프링이 IoC 방식으로 관리하는 오브젝트를 뜻한다. - 주의할 점은 스프링을 사용하는 애플리케이션에서 만들어지는 모든 오브젝트가 다 빈은 아니라는 사실이다.
=> 그중에서 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.
=> 우리가 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다. - ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다.
=> 즉 Spring에서의 빈은 ApplicationContext가 알고 있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고 있는 객체를 의미한다. - 프로젝트가 실행될 때 사용자가 Bean으로 관리하는 객체들의 생성과 소멸에 관련된 작업을 자동적으로 수행한다.
이때 객체가 생성되는 곳을 Bean 컨테이너라고 부른다.
참고자료
반응형