본문 바로가기

백엔드/자바

스프링 부트 프로젝트 만들기

반응형

자바는 객체지향언어로 1995년에 James Gosling에 의해 개발된 이후 지금까지도 많이 사용되는 프로그래밍 언어입니다. 스프링은 자바 웹 개발에 사용되는 프레임 워크로 애플리케이션 개발에 필요한 다양한 기능을 제공합니다. 스프링의 단점 중 하나는 본격적인 개발에 앞서 웹 개발에 필요한 서버와 jar파일 등 설정을 수동으로 해야 한다는 점인데 스프링 부트는 이러한 설정을 자동으로 해 주고 서버 또한 제공해 주는 헬퍼로 스프링의 단점을 극복해 주기 때문에 많이 사용됩니다. 오늘은 스프링 부트 프로젝트를 생성하는 방법과 기본설정에 대해 살펴보겠습니.

목차

프로젝트 생성

스프링 이니셜라이져 사용하기

이니셜라이저 사이트로 이동

Spring Initializr

 

Spring Initializr

Initializr generates spring boot project with just what you need to start quickly!

start.spring.io

프로젝트, 언어, 프로젝트 이름, 디펜던시 설정 후 생성버튼 클릭

다운로드된 파일 압축해제

사용하고자 하는 편집기를 사용하여 열기

인텔리제이에서 생성하기

인텔리제이를 열고 'New Project' 선택

좌측에 스프링 이니셜라이져 선택하고 이름 지정, 언어선택(자바), 빌드타입 선택, SDK, 언어 버전, 패키지 방식을 지정

필요한 디펜던시 설치

완료 선택

개발환경 설정

프로젝트를 생성하고 개발에 들어가기 전에 언어형식 등 개발환경 설정이 필요합니다.

인코딩 형식 설정

파일(File) -> 설정(Settings) 선택

편집기(Editor) -> 파일 인코딩(File Encodings) 선택 후 프로젝트 상단과

하단에 인코딩 형식 수정(UTF-8이 일반적으로 사용됨)

JDK 설정

자바애플리케이션 개발의 필수인 JDK는 프로젝트 생성 시 자동으로 설정됩니다. 버전변경이나 설정되지 않은 경우 설정은 파일(File) -> 프로젝트 구성(Project Structure) 선택

프로젝트 메뉴에서 수정

프로젝트 구조

생성된 프로젝트는 아래와 같은 구조를 가집니다.

▶ src/main/java

자바 소스파일

▶ src/main/webapp

웹 템플릿 파일, 웹 구성 파일, 스태틱 파일 (이미지 등), CSS, JS. 주의할 점은 war 패키징 형식에서만 사용가능 (jar 불가)

▶ src/main/resources

애플리케이션 구성 파일이나 속성들 (properties)

▶ src/main/resources/application.properties

애플리케이션 제작에 필요한 모든 설정은 프로젝트 생성과 함께 초기값이 주어집니다. 기본설정 변경은  application.properties 파일에서 가능합니다. 기본속성과 이름은 spring.io 페이지에서 확인 가능하며 대표적인 속성은 아래와 같습니다.

▶▷ Core

로깅 레벨 설정 (로깅레벨 옵션들: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF)

 

logging.level.org.springframework=DEBUG

로깅 파일 생성

logging.file.name=<fileName>.log

로깅 경로설정

logging.file.name=<fileName>.log
logging.file.path=<path>

▶▷ Web

포트변경 (기본포트는 8080)

server.port=8000

콘텍스트 경로 추가 (포트 뒤에 오는 경로추가)

server.servlet.context-path=/path

세션 타임아웃 시간설정 (기본 30분)

server.servlet.session.timeout=15m

▶▷ Security

유저이름 변경

spring.security.user.name=admin

비밀번호 변경

spring.security.user.password=1234

▶▷ Actuator

엔드포인트 추가

management.endpoints.web.exposure.include=<endpointName>

모든 엔드포인트 추가

management.endpoints.web.exposure.include=*

기본 경로변경 (기본경로: /actuator)

management.endpoints.web.base-path=/newpath

▶▷ Data

데이터베이스 추가

spring.datasource.url=<dbPath>

데이터베이스 유저 설정

spring.datasource.username=<userName>

데이터베이스 비밀번호 설정

spring.datasource.password=<password>

▶▷ Integration

▶▷ Devtools

▶▷ Testing

▶ src/test

유닛 테스트 코드

프로젝트 매니져

스프링 부트 프로젝트는 그레이들이나 메이븐 같은 프로젝트 매니저 도구를 사용하여 필요한 디펜던시들을 (스프링, 하이버네이트 등 가각 jar파일들) 자동으로 가져옵니다. 각 타입에 따른 프로젝트 구조를 살펴보겠습니다.

Maven

▶ target

컴파일된 파일들이 저장되는 곳 (애플리케이션 구동 시 자동으로 생성)

▶ mvnw

메이븐 wrapper 파일, 메이븐 프로젝트 구동 (메이븐이 설치되지 않은 경우 자동으로 설치). 메이븐이 설치된 경우 삭제해도 동작

▶ mvnw.cmd (Window) / mvnw.sh (Linux, Mac)

메이븐 wrapper 파일. 메이븐이 설치된 경우 삭제해도 동작

▶ pom.xml (Project Object Model file)

필요한 디펜던시 목록을 담은 파일로 루트에 위치. 프로젝트의 정보를 담은 프로젝트 메타 데이터 (이름, 버전, 컴파일 타입), 디펜던시 목록을 담은 디펜던시, 플러그 인 목록을 담은 플러그 인으로 구성

 

<parent>는 컴파일러 레벨, UTF-8 소스 인코딩 등 기본 설정을 담고 있습니다. 기본 세팅은 <properties> 섹션에서 수정이 가능합니다.

 

project coordinates

<groupId> 그룹이름 도메인의 역순으로 쓰는 것이 컨벤션
<artificialId> 프로젝트 이름
<version> 프로젝트 버전, 개발 중인 경우 '-SNAPSHOT'을 붙임

dependency coordinates

<groupId>  
<artificialId>  
<version> 생략 시 가장 최신 버전사용
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <!-- project information -->
    <groupId>com.example</groupId>    <!-- project coordinate -->
    <artifactId>demo</artifactId>     <!-- project coordinate -->
    <version>0.0.1-SNAPSHOT</version> <!-- project coordinate -->
    <packaging>jar</packaging>
    <name>demo</name>
    <description>demo</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    
    <!-- dependencies -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- plugins -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

※ 디펜던시 정보는 아래 사이트에서 확인 가능, 다른 사이트의 경우 필요한 디펜던시를 각각 추가해야 하는 불편함이 있지만 maven central repository는 의존하는 모든 디펜던시까지 제공해 줌

https://spring.io/

 

Spring | Home

Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.

spring.io

https://hibernate.org/

 

Hibernate. Everything data.

More than an ORM, discover the Hibernate galaxy.

hibernate.org

http://search.maven.org 

 

Maven Central Repository Search

 

search.maven.org

※ 스프링 부트 스타터 같이 여러 디펜던시를 포함하는 디펜던시의 경우 pom.xml 파일에 추가된 정보만으로는 어떤 디펜던시들이 포함되어 있는지 알기 힘듭니다.

 

포함된 디펜던시를 확인하려면 View -> Tool Windows -> Maven 순으로 선택

디펜던시 폴더 열어서 확인


Gradle

이상으로 스프링 부트 프로젝트를 생성하는 방법을 살펴보았습니다.

 

728x90
반응형