강의를 들으며 내가 알고 있는 내용을 점검하고,
새로 배운 내용을 정리하며,
궁금한 내용을 알아가며 학습해나가는 것을 목표로 합니다.
빌드 툴은 프로젝트를 실행 하는 과정을 자동화 해줍니다.
자바 기반 프로젝트에서 많이 사용되는 빌드 툴입니다.
XML 기반의 빌드 스크립트로 설정 모델을 제공하고 pom.xml 파일로 작성할 수 있습니다.
pom에 의해서 프로젝트에 대한 description을 정의하면 Maven이 build 해줍니다.
Maven coordinates는 특정 프로젝트를 식별하는 역할을 합니다.
Transitive Dependencies란 의존성의 의존성을 말합니다.
만약 a가 b를 참조하고, b가 c를 참조하면, a는 c를 transitive 의존성으로 간주합니다.
이러한 경우 maven은 의존성 트리를 구성하여 동일한 groupId와 artifactId에서는 가장 최신의 version 정보를 사용하게 됩니다.
이러한 기능은 버전 간 충돌이나 라이브러리간 충돌의 문제를 야기할 수 있습니다.
Gradle은 Groovy, Kotlin 기반으로 빌드 스크립트를 작성하여 사용하는 빌드 툴입니다.
Gradle build도 하나 이상의 프로젝트를 구성할 수 있습니다.
하나의 프로젝트는 하나 이상의 task로 구성 됩니다.
Task는 클래스를 컴파일하거나 jar를 생성하거나 하는 빌드를 위한 작업입니다.
이러한 태스크는 직접 만들 수도 있지만 일반적으로는 플러그인에 의해 제공됩니다.
Gradle에 실제 Task와 주요한 기능을 추가하게 해줍니다.
플러그인을 추가하면 새로운 Task가 추가 되고, 도메인 객체나 특정 컨벤션들이 추가됩니다.
2002년 Rod Johnson이 발행한 Expert One-to-One :J2EE Design and Development에서 Spring의 역사를 찾아 볼 수 있습니다.
책에서는 EJB의 어려움을 어떻게 극복하는지에 대해서 설명하였습니다.
그 후 Juergen Hoeller가 이러한 기술을 오픈소스화 시키자고 하며 기나긴 “J2EE“의 겨울을 끝내고 “Spring” 이라는 이름의 봄이 온다는 의미를 담아 이름 지었습니다.
Spring은 여러 프로젝트로 구성되어 있는 자바 기반의 프로그래밍에 있어 방대한 기능을 제공하는 Framework입니다.
스프링에는 스프링 프레임워크를 비롯한 다양한 프로젝트들이 있으며, 실제로 웹 어플리케이션 등을 개발할 때에는 스프링 프레임워크 단독으로 사용하기 보다는 여러 스프링 관련 프로젝트와 함께 개발합니다.
자주 사용되는 프로젝트는 아래와 같습니다.
이런 여러 프로젝트들은 Spring Framework와 의존 관계를 가집니다.
이 중 스프링 부트는 컴퓨터를 부팅한다는 의미처럼 스프링을 사용할 있도록 사용 가능한 상태로 만들어 줍니다.
스프링 부트의 대표적인 기능은 아래와 같습니다.
이러한 기술들에 대해 이해 해야합니다.
스프링의 IoC 컨테이너, DI를 다루기에 앞서 의존성에 대해서 살펴 보겠습니다.
의존성이란 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이의 의존성이 존재하게 됩니다. 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가집니다.
엔티티는 다른 엔티티와 구별할 수 있는 식별자를 가지고 있고,
시간에 흐름에 따라 지속적으로 변경이 되는 객체입니다.