질문 내용
- 아래에 대하여 설명하시오.
- maven 이란?
- maven repository 란?
- DI
- IOC
- IOC 컨테이너
개인 작성
- 빌드 툴
- 다른 빌드 툴로는 gradle이 있다.
- Spring은 maven을 많이 사용. 안드로이드에서는 gradle을 많이 사용.
- 작성 -> 컴파일 -> 실행 -> 테스트 -> 배포 : 해당 전체 과정을 빌드라고 한다.
- 즉, 빌드 툴은 빌드를 도와주는 툴이라고 보면 된다.
- Maven에서 사용하는 라이브러리 및 프로젝트의 저장소
- 중앙 저장소 : Maven 공식 저장소. 대부분의 일반적인 라이브러리 및 플러그인을 제공
- 사용자 정의 저장소 : 조직이나 개인이 필요에 따라 직접 호스팅하는 저장소
- 의존성 주입
- 의존성이란?
- 한 요소가 다른 요소에 의존하여 작동하거나 영향을 받는 것
- 객체 간의 관계를 얘기하는 경우가 많음.
가정 1 : 객체 A 내 멤버 중 객체 타입을 가진 멤버 B가 있는 경우
-> 해당 객체A는 그 멤버B에 의존성을 가짐.
- 가정 1에서, B 멤버 값을 넣는 방법
- B의 생성자 함수로 직접 생성
- 함수를 통해 B 멤버에 대입 -> 주입이라고 표현
- 의존성 주입
- 객체 A 내 멤버 중 객체 타입을 가진 멤버 B가 있는 경우, 함수를 통해 멤버 B에 해당 객체를 대입하는 것
-> 그러면 멤버 B에 담기는 객체는 어디서 넣어주는 것인가?
-> A 내부가 아니라 A 외부에서 주입하는 것.
-> 주입은 다른 객체가 주체가 된다.
- IOC(Inversion of Control)
- 제어의 역전
- 간단하게 생각하면, 객체 호출 순서가 반대가 된다.
- 소프트웨어 컴포넌트의 제어 흐름이 뒤바뀌는 디자인 원칙
- 해당 부분으로 인해, 조립을 통한 기능 구현이 가능
- IOC를 구현하는 프레임워크나 라이브러리에서 제공하는 컨테이너
주요 역할
- 객체 생성 및 관리
- 의존성 주입
- 제어의 역전