
요청 request | 응답 response
요청 : 웹 브라우저가 웹 서버에게 HTML 문서를 달라고 요청하는 것을 말하고,
응답 : HTTP 요청을 받은 웹 서버가 요청에 해당하는 HTML문서를 주는 것을 말함
1. 스프링 프레임워크와 스프링 부트의 차이는 무엇인가요 ?
결론부터 이야기하자면, 스프링 부트는 스프링 프레임워크를 사용하기 쉽도록 만들어줍니다. 스프링 부트가 스프링 프레임워크와 별개의 존재가 아니라는 것이다.
좀 더 자세히 설명하지면, 스프링 프레임워크는 현재 자바 진영에서 가장 많이 사용되고 있는 프레임워크입니다. 객체지향적인 개발을 위해 필요한 의존성 주입이나 재어의 역전을 손쉽게 활용할 수 있어 애플리케이션에서 핵심적인 로직에 집중하도록 도와주기 때문입니다. 또한 스프링 프레임워크는 XML과 같은 여러 가지 초기 설정을 해줘야 하는데 스프링 부트를 쓰면 이러한 초기 설정을 간단하게 할 수 있습니다. 뿐만 아니라 내장 톰캣을 사용하면 애플리케이션을 손쉽게 빌드하고 배포할 수 있습니다.
1-1) 객체지향적인 개발이 어떤 것인지 설명해보세요.
1-2) 의존성 주입이 뭔가요 ?
의존성 주입은 객체가 필요로 하는 의존성을 외부에서 주입받는 디자인 패턴입니다. 이를 통해 객체 간의 결합도를 낮추고 코드의 재사용성과 테스트 용이성을 높일 수 있습니다.
1-3) 제어의 역전이 뭔가요 ?
제어의 역전은 프로그램의 제어 흐름을 개발자가 아닌 프레임워크가 관리하는 디자인 패턴입니다. 전통적인 프로그래밍에서는 개발자가 직접 객체를 생성하고 메서드를 호출하는 등의 제어를 했지만, IoC에서는 이러한 제어권이 프레임워크로 넘어갑니다.
객체 생명주기 관리: 프레임워크가 객체의 생성, 소멸 등을 관리해줍니다.
의존성 관리 용이: 필요한 객체들을 프레임워크가 자동으로 주입해줍니다.
결합도 감소: 객체 간의 직접적인 의존성이 줄어들어 유지보수가 쉬워집니다.
Spring Framework에서는 IoC 컨테이너가 이러한 제어를 담당하며, 이를 통해 DI(의존성 주입)를 구현합니다. 개발자는 비즈니스 로직에만 집중할 수 있고, 객체 생성과 관리는 프레임워크에 위임할 수 있습니다.
2) 프레임워크와 라이브러리의 차이는 무엇인가요 ?
우리가 작성하는 코드와의 관계를 생각해 볼 수 있을 것 같습니다. 프레임워크는 제가 작성한 코드가 프레임워크를 호출하는 것이 아니라 프레임워크가 필요할 때 제가 작성한 코드를 호출합니다.
반면 라이브러리는 제 코드를 필요할 때 호출해서 사용합니다. 다시 말해 프레임워크는 애플리케이션 전체 실행 흐름을 좌우합니다.
이미 특정 프레임워크로 개발된 애플리케이션을 다른 프레임워크로 바꾸는 것은 매우 어렵습니다. 왜냐, 실행의 흐름이 이미 해당 프레임워크에 맞춰서 개발되어 있기 때문이죠. 반면 라이브러리는 상대적으로 다른 라이브러리로 바꾼느 것이 간단합니다.
제가 작성한 코드에서만 부분적으로 사용되고 있기 때문입니다.
2-1) 프레임워크와 라이브러리를 사용했던 구체적인 예시를 들어 보세요.
3) 왜 메이븐 빌드 툴로 사용했나요 ?
메이븐과 그래들 중에서 고민하다가 메이븐을 선택했었는데요. 현재 더 많이 사용되고 있는 빌드 툴 이기 때문입니다. 그래서 의존성을 추가할 때도 그래들보다 예제를 더 쉽게 찾을 수 있다는 장점이 있습니다. 또한 제가 앞으로 유지 보수 해야할 프로젝트가 메이븐으로 되어 있을 확률이 높기 때문에 선택했습니다.
3-1) 그렇다면 그래들을 사용해 본 경험은 없나요 ?
3-2) 팀에서 메이븐이 아닌 그래들을 사용해야 한다면 어떻게 할 건가요 ?
4) URI와 URL의 차이를 설명해 보세요 .
URI가 URL보다 상위 개념입니다. URI에는 URL과 URN이 포함이 되어있는데요.
URL은 스키마를 통해 어떤 방법으로 어디를 통해 자원을 가져와야하는 지를 나타낸다면,
URN은 고유한 리소스 자체를 표현합니다. 책 번호로 사용되는 ISBN이 대표적인 URN입니다.
또한 URN을 URL로 변환시키는 작업이 필요할 때도 있습니다.