Helmi

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

SpringBoot

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

Helmi 2023. 3. 6. 22:48

1. Spring Boot Project 생성

1-1) spring initializr 사이트에서 템플릿 다운로드해 임포트 하는 방법.

애플리케이션에 필요한 의존성을 쉽게 추가할 수 있는 방법 제공하며 많은 설정을 수행

https://start.spring.io/

예시

1-2) Spring Starter Project 이용

file - spring starter project 선택
artifact :  개발 프로세스에 의해 생산되는 산출물
필요 의존성 선택 주입

+) 의존성 주입 추가 방법

 

2. 빌드 도구

메이븐 : 자바 프로젝트의 빌드를 자동화해주는 빌드 툴.

개발 과정 중 많은 라이브러리들이 필요한데, pom/xml 파일에 필요 라이브러리 적어주면 메이븐이 알아서 네트워크 통해 다운로드 하고 경로까지 지정해줌. (없었다면 jar 파일들 일일이 받아 직접 넣어줘야 했음)

 

아래는 위의 의존성 주입 후 자동 생성된 라이브러리 목록 예시

<?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>2.7.9</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.shop</groupId>
	<artifactId>shop</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>shop</name>
	<description>Shop Project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

 

3. 설정 파일 (application.properties)

스프링 부트 애플리케이션 실행 시 사용하는 여러 설정 값들 정의하는 파일

1) 'src/main/resources' 폴더 아래 자동 생성 됨. 바로 설정 파일로 이용 가능. (만약 자동 생성 안되면 직접 생성해주어도 됨)

개발 환경, 테스트 환경, 운영 환경 따라 연결해야 할 데이터 베이스, port, debug level 등 나눠야 하면 다음 명명 규칙으로 설정 파일 만듬

application-{profile}.properties

ex) application-dev.properties / application-prod.properties

server.port = 80
application.name = spring-demo

application.properites에 설정해 둔 값 자바 코드에 사용할 시 @Value 어노테이션 통해 읽어올 수 있음.

어노테이션(Annotation)
: 주석. 메타데이터(데이터를 위한 데이터)라고도 불림. 클래스나 메소드, 변수 등 선언 시 '@' 붙여 사용.
  컴파일러에 정보 알려주거나 실행 시 별도 처리 필요할 때 등 다양한 용도로 사용 가능.

2) 애플리케이션 설정 파일 만드는 다른 방법으로 application.yml 파일 사용 가능.

장점 : 들여쓰기 통해 설정 값들 계층 구조 관리 가능해 가독성 향상

단점 : 문법이 좀 더 엄격

 

4. Hello World 출력

- com.example.SpringDemoApplication.java

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringDemoApplication {

  public static void main(String[] args) {
     springApplication.run(SpringDemoApplication.class, args);
     }
     
   @GetMapping(value = "/")
   public String HelloWorld() {
   return "Hello World";
   }
 }

@RestController

Restful Web API를 좀 더 쉽게 만들기 위해 만듬. @Controller + @ResponseBody

클래스 이름 위에 @Controller 어노테이션 선언 시 해당 클래스 요청을 처리하는 컨트롤러로 사용

 

@ResponseBody 

자바 객체를 HTTP 응답 본문의 객체로 변환해 클라이언트에게 전송. 따로 html 파일 만들지 않아도 웹 브라우저에 문자열 출력 가능

 

@GetMapping

클라이언트의 요청 처리할 URL 매핑.

'SpringBoot' 카테고리의 다른 글

상품 엔티티 설계  (0) 2023.03.13
쇼핑몰 프로젝트 생성  (0) 2023.03.12
JPA란?  (0) 2023.03.07
@Lombok 어노테이션 정리  (0) 2023.03.06
스프링 부트의 특징  (0) 2023.03.06