[SpringBoot] 툴 설치 및 프로젝트 생성

함배·2023년 9월 18일
0

1. 이클립스(eclipse) vs 인텔리제이(IntelliJ)

이클립스인텔리제이
장점- 무료- 플러그인 간편 설치 가능
- 여러 프로젝트 동시 관리 가능- 직관적이고 예쁜 UI
- 다양한 백엔드&프론트엔드 프로젝트 생성
- 자동완성, 소스코드 분석, 지능형리펙토링, 디버거, 테스트러너 기능 이클립스보다 우수
- 형상 관리를 git으로 하면 intelliJ가 편함
단점- 다른 IDE 툴에 비해 느림.(근소하게)- 단축키, 툴 적응에 시간 필요
- 자바로 만들어져서 자바가상머신(JVM) 위에서 실행되므로 다른 IDE에 비해 속도가 느림- 기능이 제한된 무료 버전있지만, 유료인 버전을 사용해야 장점을 살릴 수 있음.
- 다양한 언어를 지향한다고 되어 있지만, JAVA를 제외한 언어는 개발하기 불편

<요 약>
인텔리제이 : 한 프로젝트만 한 윈도우에서 -> 한 프로젝트에 집중할 때
이클립스 : 여러 프로젝트 한 윈도우애서 -> 여러 프로젝트를 왔다갔다 할 때
.
.

난 굳이 여러 프로젝트를 이동할 필요가 없기 때문에 인텔리제이를 설치해 사용할 것이다!




2. 인텔리제이 설치

설치 방법은 이미 잘 정리가 된 글들이 많기 때문에 링크를 첨부하겠다.

Windows 설치 방법
macOS 설치 방법
Linux 설치 방법




3. 프로젝트 생성하기

스프링 Initializr(이니셜라이저)를 사용해 애플리케이션 초기 설정을 해보자.

3.1 스프링 Initializr를 사용하는 방법

스프링 Initializr는 REST API를 사용하는 브라우저 기반의 웹 애플리케이션이며,우리가 원하는 기능을 구현할 수 있는 스프링 프로젝트의 구조를 생성해준다.

스프링 Initializr를 사용하는 방법은 여러 가지가 있다.

1. https://start.spring.io/ 의 웹 애플리케이션에서
2. 명령행에서 curl 명령을 사용해서
3. 명령행에서 스프링부트 CLI(Command-Line Interface)를 사용해서
4. Spring Tool Suite IDE를 사용해서 새로운 프로젝트를 생성할 때
5. IntelliJ IDEA IDE를 사용해서 새로운 프로젝트를 생성할 때
6. NetBeans IDE를 사용해서 새로운 프로젝트를 생성할 때

1,4,5번이 대중적으로 많이 사용되는데,
4번은 별도 툴 설치가 필요하고,
5번은 유료 버전인 인텔리제이 Ultimate 버전에서만 사용이 가능하다.

그러니 가장 빠르고 간단하게 해볼 수 있는
'1. https://start.spring.io/ 의 웹 애플리케이션에서'를 이용해서 프로젝트를 생성해보겠다.

(나머지 방법이 궁금하다면 걸어둔 링크를 참조하세요🙂)

3.2 프로젝트 생성하기

1. https://start.spring.io/ 접속

2. 빌드 도구 선택!

  • 크게 Maven 또는 Gradle로 선택 가능하다.
  • 나는 Gradle-Groovy으로 선택했다.

    이유는?
  1. Gradle이 Maven보다 성능이 우수하다.
    문법이 짧고 간결하며, Java뿐만 아니라 다른 언어에서도 사용 가능한 범용성을 지니고, 성능 비교에서 Gradle이 거의 모든 시나리오에서 최소 2배 이상 더 빠르다고 한다.

    참고 링크 : Gradle vs Maven Comparison

  2. 대중성, refrence 측면에서 Groovy가 더 많다.
    단순히 의존성 관리를 하는 것을 넘어 실제 스크립트를 많이 작성해야 하는 경우, groovy라는 언어도 알고 kotlin이라는 언어도 알아야 하는 점이 부담되어 Gradle-Kotlin을 선택하는 분들이 많지만,

    아직까지 대중성 측면이나 reference 측면에서 groovy가 많아 익숙한 groovy로 선택!
    .
    .
    더 자세한 차이에 대해 다음 포스팅에서 정리할 예정이다

3. 개발 언어 선택

  • 프로그램을 구현하면서 사용할 언어인 Java로 선택!

    여기서 Kotlin과 Groovy언어에 대한 설명 또한 다음 포스팅에서~

4. 스프링 부트 버전 선택

  • 현재 스프링 부트 버전은 다음과 같이 나온다.

  • 크게 3.X버전과 2.X 버전으로 나뉜다.
    - Spring Boot 3버전은 Java 17버전 이상이어야 한다.

  • (SNAPSHOP)이나 (M2)가 뒤에 붙은 버전들은 정식 릴리즈되지 않은 버전이므로, 불안정할 수 있다.

  • cmd에 java 버전을 확인해본다.
    나는 java 11버전이 설치되어 있으므로, 2.7.15 버전 선택!

현재는 설치돼있는 jdk가 11버전이라 그거에 맞춰 다운로드했지만,
인텔리제이는 복잡하게 JDK를 다운로드받고 환경변수를 설정하는 과정을 거치지 않아도 되므로 다운받고 싶은 버전을 다운받고, 그에 맞는 jdk를 인텔리제이에서 다운로드받아 설정해줘도 된다!

참고링크 : IntelliJ JDK 설치 방법 및 버전 변경 방법


5. 프로젝트 패키지, 이름, 설명, 패키징 파일(jar 또는 War), JDK 버전 지정 가능

  • Group : 프로그래밍을 진행할 폴더인 src폴더 안에 1차적으로 파일을 묶어줄 폴더 구성.

  • Artifact : Application 바로 상위에 있는 폴더명. Artifact를 지정하면 Name에도 같은 값이 들어감.

  • Name : Application 이름 변경

  • Description : 프로젝트 설명 쓰는 곳

  • Package name : Group과 Artifact의 값을 통해 자동으로 지정되는 패키지 경로

  • Packaging : 프로그램 배포 파일 형식 선택. Jar는 라이브러리나 자바 애플리케이션을 배포할 때 사용하고, WAR는 웹 애플리케이션을 배포할 때 사용한다.
    Spring Boot 자체가 웹 서버를 포함하니 Jar방식의 배포 방식 추천!

  • Java : 자바 11 버전 선택.
    앞서 스프링부트 버전을 2.X버전으로 선택했기 때문에 자바 버전은 17 이하 버전이어야 한다.

.
.

현재까지 설정된 내용이다!

.
.

6. 의존성 선택

  • 프로젝트에 이미 만들어져있는 여러 모듈들을 추가할 수 있는 곳!
    추후에도 추가가 가능하니 우선 두 가지 정도만 추가를 하고 생성해보자!

    - Spring Web : 우리 프로젝트를 웹 프로젝트로 만들어준다!
    - Lombok : 자바 클래스를 만들때 자주 사용되는 getter/setter나 toString 등의 코드를 애너테이션으로 대체해서 선언하고 java 코드를 컴파일 할 때 그에 맞는 코드를 생성해주는 것
    - Spring Boot DevTools : 빠른 애플리케이션 재시작, LiveReload 및 향상된 개발 경험을 위한 구성을 제공하는 개발자 도구를 제공

LiveReload란?
LiveReload는 코드 변경 시 자동으로 브라우저를 새로 고쳐서 변경 사항을 즉시 확인할 수 있게 해준다.

3.3 프로젝트 생성 최종

위와 같이 설정을 마쳤으면 GENERATE 버튼을 눌러 다운 받는다.




4. 프로젝트 구성해보기

1. 다운 받은 압축파일을 푼다.
2. File > Open

3. 압축한 폴더를 푼 경로로 가서 폴더를 열어준다.

4. Trust 체크박스 선택 후 Trust Project 선택!

5. 다음과 같은 구조의 프로젝트가 열린다!


5. 프로젝트 구조 살펴보기

다음 구조는 전형적인 그래들 프로젝트 구조라고 할 수 있다.

  • 애플리케이션 소스 코드는 src/main/java
    - 자바 파일을 작성하는 공간, 자바 파일로는 스프링부트의 controller, dto, entity, service 등의 파일이 있다.

  • 테스트 코드는 src/test/java
    - 프로젝트에서 작성한 파일을 테스트하기 위한 테스트 코드를 작성하는 공간.

  • 자바 리소스가 아닌 것은 src/main/resources
    - 자바 파일을 제외한 HTML, CSS, Javascript, 환경파일 등을 작성하는 공간
    • static 디렉터리 : 스타일시트(.css), 자바스크립트(.js) 그리고 이미지 파일 등을 저장하는 공간
    • templates 디렉터리 : html 파일 형태로 자바 객체와 연동되는 템플릿 파일 저장.
    • application.properties 파일 : 프로젝트 환경, 데이터베이스 등의 설정

  • build.gradle 파일
    - Gradle이 사용하는 환경 파일. 프로젝트를 위해 필요한 플러그인과 라이브러리 등 기술

.
.
나머지 디렉터리와 파일은 자동 생성되거나 크게 중요하지 않은 것들이라 설명은 생략!
.
.

6. Hello, World! 찍기

그럼 이제 생성된 프로젝트로 간단히 Hello World를 찍어보자!

클라이언트의 요청을 받아들이고 로직을 실행하는 컨트롤러를 생성하여 hello World를 찍어보겠다!

Controller : 화면(View)과 비즈니스 로직(Model)를 연결시키는 다리 역할. 쉽게 말하자면 화면에서 /aaa 로 가줘~ 하고 요청하면 주소를 받아들여 어디로 갈지 분석하고 맞는 길로 연결시켜주는 역할

더 자세한 내용인 MVC 패턴에 대해서는 다음 포스팅에서 설명할 예정이다.

  1. 먼저 src/main/java/패키지 밑에 TestController 클래스를 생성해준다.

// TestController.java
package com.example.demo;

public class TestController {

}
  1. @RestController
    해당 클래스가 RESTful 웹 서비스의 컨트롤러임을 나타내주도록 @RestController 어노테이션을 추가한다.
package com.example.demo;

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

@RestController
public class TestController {

}
  1. 핸들러 메서드 생성
    @GetMapping("/hello") 어노테이션을 메서드 위에 추가해서 "/hello" 경로로 들어오는 GET 요청을 이 메서드가 처리함을 나타낸다.
package com.example.demo;

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

@RestController
public class TestController {
  @GetMapping("/hello")
  public String helloWorld(){

  }
}
  1. 메서드 반환 구현
    public String helloWorld() {...} 부분에 return "Hello, World!"; 코드를 추가해 클라이언트에게 문자열을 반환한다.
package com.example.demo;

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

@RestController
public class TestController {
  @GetMapping("/hello")
  public String helloWorld(){
    return "Hello, World!";
  }
}

.
.
이제 준비는 끝났다!

  1. localhost:8080/hello에 접속
    기본적으로 8080 포트로 설정되어 있기 때문에 프로젝트를 빌드하여 실행하고


    localhost:8080/hello에 접속해보면??!?

    Hello,World! 메세지를 확인할 수 있다

.
.
.
-끝-
.
.

다음엔 MVC 역할과 흐름에 대해 정리해보겠다

profile
아둥바둥 개발자

0개의 댓글