-
04 스프링 부트 애플리케이션 개발하기공부/스프링부트 핵심가이드 2023. 7. 13. 12:20728x90
4.1 프로젝트 생성
스프링 부트 프로젝트를 쉽게 만드는 방법
1)'인텔리제이 IDEA에서 프로젝트를 생성하는 방법'
2)'Spring Initializer'를 사용해서 생성하는 방법'
4.1.1 인텔리제이 IDEA에서 프로젝트 생성하기
인텔리제이 IDEA얼티밋 버전은 커뮤니티 버전보다 많은 기능을 지원함
하지만 나는 인텔리제이 IDEA 커뮤니티 버전이기 떄문에 생략함
4.1.2 스프링 공식 사이트에서 프로젝트 생성하기
위 경로로 접속하여 각 항목을 선택하고 Generate하면 설정이 적용된 프로젝트 파일을 내려받을 수 있음
Dependencies항목을 채우기 위해 ADD DEPENDENCIES...버튼을 클릭하여 Lombok, Spring Configuration Processor, Spring Web을 추가함
모든 옵션을 선택하고 의존성까지 추가했다면 스프링 프로젝트를 생성할 준비 끝!
GENERATE버튼을 클릭해 프로젝트를 내려받고 압축파일을 프로젝트를 진행할 경로로 옮기고 압축을 푼 후 인텔리제이 IDEA를 실행하고 프로젝트를 선택해 열어봄
외부에서 내려받은 프로젝트를 인텔리제이 IDEA에서 열면 경고 문구가 나타나는 경우가 있음
Trust Project를 클릭해 무시
프로젝트를 처음 열면 몇가지 초기화 작업이 진행됨
인텔리제이 IDEA 우측 하단에 표시된 진행사항이 모두 완료되면 정상적으로 프로젝트 이용가능
4.2 po,.xml(Project Object Model)살펴보기
pom.xml 파일은 메이븐의 기능을 사용하기 위해 작성하는 파일
이 파일에는 프로젝트, 의존성 라이브러리, 빌드 등의 정보 및 해당 프로젝트를 관리하는데 필요한 내용이 기술
4.2.1 빌드 관리 도구
빌드 관리 도구는 JCM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구
개발 규모가 커질수록 관리할 라이브러리가 많아지고 라이브러리 간 버전 호환성을 체크해야하는 어려움이 발생하는데, 빌드 관리 도구를 이용하면 이 같은 문제를 해결할 수 있음
4.2.2 메이븐
아파치 메이븐은 자바 기반의 프로젝트를 빌드하고 관리하는 데 사용하는 도구
초창기 자바 프로젝트의 대표적 관리 도구였던 Ant를 대체하기 위해 개발되었음
메이븐의 가장 큰 특징은 pom.xml파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 필요한 라이브러리까지 함께 내려받아 관리한다는 점
메이븐의 대표 기능은 아래와 같음
- 프로젝트 관리 : 프로젝트 버전과 아티팩트를 관리
- 빌드 및 패키징 : 의존성을 관리하고 설정된 패키지 형식으로 빌드를 수행
- 테스트 : 빌드를 수행하기 전에 단위 테스트를 통해 작성된 애플리케이션 코드의 정상 동작 여부를 확인
- 배포 : 빌드가 완료된 패키지를 원격 저장소에 배포
메이븐의 생명주기
메이븐의 기능은 생명주기 순서에 따라 관리되고 동작
인텔리제이 IDEA에서 생성한 프로젝트의 경우 인텔리제이 IDEA에서 우측에 있는 'Maven'탭을 클릭하면 생명주기를 확인할 수 있음
메이븐의 생명주기는 크게 기본 생명주기(Default Lifecycle), 클린 생명주기(Clean Lifecycle), 사이트 생명주기(Site Lifecycle)로 구분함
특정 단계를 수행하기 위해서는 이전 단계를 마쳐야함
각 단계는 메이븐에서 제공하는 플러그인이 설정된 목표(goal)를 수행하는 방식으로 동작
또한 그림에서 표현되지 않은 세부 단계들이 존재
메이븐의 생명주기 단계는 순차적으로 실행되며, 각 생명주기 단계의 역할은 다음과 같음
클린 생명주기
- clean:이전 빌드가 생성한 모든 파일을 제거
기본생명주기
- validate:프로젝트를 빌드하는 데 필요한 모든 정보를 사용할 수 있는지 검토
- compile:프로젝트의 소스코드를 컴파일
- test:단위 테스트 프레임워크를 사용해 테스트를 실행
- package:컴파일한 코드를 가져와서 JAR등의 형식으로 패키징을 수행
- verify:패키지가 유효하며 일정 기준을 충족하는지 확인
- install:프로젝트를 사용하는데 필요한 패키지를 로컬 저장소에 설치
- deploy:프로젝트를 통합 또는 릴리스 환경에서 다른 곳에 공유하기 위해 원격 저장소에 패키지 복사
사이트 생명주기
- site:메이븐의 설정 파일정보를 기반으로 프로젝트의 문서 사이트를 생성
- site-deploy:생성된 사이트 문서를 웹서버에 배포
더보기여전히 메이븐도 많이 사용하지만 최근에는 그레이들(Gradle, https://gradle.org/)이라는 는 빌드 도구로 전환되는 추세
안드로이드에서는 그레이들을 표준 빌드 도구로 채택
빌드 도구에 대해 알아보면 개발 환경을 구축하는데 도움이 될 것
4.3 Hello World 출력하기
4.3.1 컨트롤러 작성하기
먼저 앞에서 생성한 프로젝트에 패키지르 ㄹ생성해야함
레이어드 아키텍처에 맞춰 도메인 구분없이 패키지를 구성
com.springboot.hello패키지에 마우스 오른쪽 버튼을 클릭한후 New->Pachkage를 차례로 선택해 'controller' 라는 이름의 하위 패키지를 생성
'controller'패키지에 마우스 오른쪽 버튼을 클릭한 후 New->Java Class를 클릭하고 HelloController라는 이름의 컨트롤러 생성
컨트롤러에 포함된 로직에서는 애플리케이션의 사용자 또는 클라이언트가 입력한 값에 대한 응답을 수행
특별한 경우를 제외한 모든 요청은 컨트롤러를 통해 진행되어야함
이번 예제는 컨트롤러 내부에서 모든 로직을 처리했지만 데이터를 다루거나 별도의 로직을 처리해야하는 경우에는 서비스 또는 데이터 액세스 레이어까지 요청을 전달하는 경우가 일반적
package com.test.HelloWorld.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"; } }
이후 HelloWorldApplication으로 돌아와 실행버튼을 누르면 아래와 같은 결과가 출력됨
8080포트를 통해 웹서버가 열린 것을 로그의 세번째 줄에서 확인할 수 있음
더보기스프링부트에서는 기본적으로 8080번 포트를 통해 웹 애플리케이션이 실행
필요에 따라 포트를 변경해야한다면 src/main/resources/application.properties파일에서 변경가능
server.port=9090
포트를 변경하고 다시 애플리케이션을 실행하면 로그에서 변경된 포트 번호로 출력되는 것을 확인가능
4.3.3 웹 브라우저를 통한 동작 테스트
웹 브라우저로 스프링부트가 설정한 URL에 접속하면 간단하게 실행 결과를 확인할 수 있음
웹 브라우저 주소창에 'http://localhost:8080/hello'를 입력하면 Hello World가 출력되는 것을 확인 가능
4.3.4.Talend API Tester를 통한 동작 테스트
웹 브라우저를 통한 동작 테스트는 간편하지만 상세한 응답을 확인할 수 없다는 단점 존재
구글 크롬의 확장 프로그램인 Talend API Tester를 사용하면 이같은 문제를 해결할 수 있음
크롬 브라우저의 주소창에 'chrome://extensions/'를 입력하거나 우측 상단의 메뉴버튼을 클릭한 후 [도구 더보기]->[확장 프로그램]을 선택하면 크롬 브라우저에서 사용중인 확장 프로그램들을 볼 수 있음
'Chrome 웹 스토어 열기'항목을 클릭
크롬 웹스토어에서 'Talend API'를 검색하고 'Talend API-Free Edition'을 찾아 [chrome에 추가]클릭해 설치
Talend API Tester는 HTTP통신을 테스트하는 프로그램
GET,POST, PUT, DELETE등의 다양한 HTTP 메서드를 설정하고 쿼리와 파라미터를 담아 요청을 보낼 수 있음
Talend API Tester의 장점은 HTTP헤더를 볼 수 있다는 점
REST 통신에서는 Body값뿐만 아니라 헤더에서도 값을 추가해서 요청에 필요한 데이터를 담아 보내는 경우가 많음
'공부 > 스프링부트 핵심가이드' 카테고리의 다른 글
05 API를 작성하는 다양한 방법 (0) 2023.07.16 03 개발환경구성 (0) 2023.07.13 02 개발에 앞서 알면 좋은 기초 지식 (0) 2023.07.12 01 스프링 부트란? (0) 2023.07.11 사용 설명서 (0) 2023.07.11