스프링 부트 애플리케이션 개발하기

사공광열·2023년 7월 14일
0

SpringBoot

목록 보기
3/8

pom.xml(Project object Model) 살펴보기

pom.xml

pom.xml파일은 메이븐의 기능을 사용하기 위해 작성하는 파일 입니다. 이 파일에는 프로젝트, 의존성 라이브러리, 빌드 등의 정보 및 해당 프로젝트를 관리하는 데 필요한 내용이 기술돼 있습니다.

빌드 관리 도구

  • 빌드 관리 도구는 JVM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구입니다.
  • 개발 규모가 커질수록 관리할 라이브러리가 많아지고 라이브러리 간 버전 호환성을 체크해야 하는 어려움이 생기는데, 빌드 관리 도구를 이용하면 이 같은 문제를 해결하 수 있습니다.

메이븐

아파치 메이븐은 자바 기반의 프로젝트를 빌드하고 관리하는 데 사용하는 도구입니다. 초창기 대표적인 자바 프로그램인 Ant를 대체하기 위해 개발됐습니다. 메이븐의 가장 큰 특징은 porm.xml 파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 필요한 라이브러리 함께 내려받아 관리하는 점입니다.
메이븐의 대표 기능은
  • 프로젝트 관리: 프로젝트 버전과 아티팩트를 관리합니다.
  • 빌드 및 패키징: 의존성을 관리하고 설정된 패키지 형식으로 빌드를 수행합니다.
  • 테스트: 빌드를 수행하기 전에 단위 테스트를 통해 작성된 애플리케이션 코드의 정상 동작 여부를 확인합니다.
  • 배포: 빌드가 완료된 패키지를 원격 저장소에 배포합니다.

메이븐의 생명주기

크게 기본 생명주기(Default Lifecycle), 클린 생명주기(Clean Lifecycle), 사이트 생명주기(Site Lifecycle) 3가지 구분합니다.

각 단계는 메이븐에서 제공하는 플러그인이 설정된 목표(goal)를 수행하는 방식으로 동작합니다. 또한 그림에서 표현되지 않은 세부 단계들이 존재합니다. 메이븐의 생명주기는 단계는 순차 적으로 실행되며, 각 생명주기 단계의 역할은 다음과 같습니다.

클린 생명주기
  • clean: 이전 빌드가 생성한 모든 파일을 제거합니다.
기본 생명주기
  • validate: 프로젝트를 빌드하는 데 필요한 모든 정보를 사용할 수 있는지 검토합니다.
  • compile: 프로젝트의 소스코드를 컴파일합니다.
  • test: 단위 테스트 프레임워크를 사용해 테스트를 실행합니다.
  • pacakge: 컴파일한 코드를 가져와서 JAR 등의 형식으로 패키징을 수행합니다.
  • verify: 패키지가 유효하며 일정 기준을 충족하는지 확인합니다.
  • install: 프로젝트를 사용하는 데 필요한 패키지를 로컬 저장소에 설치합니다.
  • depoly: 프로젝트를 통합 또는 릴리스 환경에서 다른 곳에 공유하기 위해 원격 저장소에 패키지에 복사합니다.
사이트 생명주기
  • site: 메이븐의 설정 파일 정보를 기반으로 프로젝트의 문서 사이트를 생성합니다.
  • site-deploy: 생성된 사이트 문서를 웹 서버에 배포합니다.

Hello World 출력하기

컨트롤러 코드 작성하기

package com.springboot.hello.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "Hello World"
    }
    
}

Hello World가 출력됩니다.

컨트롤러에 포함된 로직에서는 애플리케이션의 사용자 또는 클라이언트가 입력한 값에 대한 응답을 수행합니다. 특별한 경우를 제외한 모든 요청은 컨트롤러를 통해 진행돼야 합니다.

profile
Interactive Developer

0개의 댓글