๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์Šคํ”„๋ง ๋ถ€ํŠธ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์„ค์ •: ์‰ฝ๊ณ  ๋น ๋ฅธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

mrmount 2024. 10. 21.

 

์Šคํ”„๋ง ๋ถ€ํŠธ(SPRING BOOT) ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์„ค์ •์„ ๊ฐ„์†Œํ™”ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น ๋ฅด๊ฒŒ ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€์˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ •์˜์™€ ํŠน์ง• , ์Šคํ”„๋ง๊ณผ์˜ ์ฐจ์ด์  , ๊ทธ๋ฆฌ๊ณ  Spring Initializr๋กœ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 


 

 

๋ชฉ์ฐจ

  1. ์Šคํ”„๋ง ๋ถ€ํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  2. ์Šคํ”„๋ง๊ณผ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ฐจ์ด์ 
  3. Spring Initializr๋กœ ์ฒซ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ
  4. ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ฃผ์š” ์„ค์ • ํŒŒ์ผ๊ณผ ์‚ฌ์šฉ๋ฒ•
  5. ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ Hello World ์˜ˆ์ œ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

 


 

1. ์Šคํ”„๋ง ๋ถ€ํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ์กด ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ณต์žกํ•œ ์„ค์ •์„ ์ž๋™ํ™” ํ•˜๊ณ , ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์›น ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ˆ˜๋งŽ์€ ์˜์กด์„ฑ, ์„œ๋ฒ„ ์„ค์ •, ๋ณด์•ˆ ๊ตฌ์„ฑ ๋“ฑ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ด๋Ÿฌํ•œ ๊ณผ์ • ๋Œ€๋ถ€๋ถ„์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ฃผ์š” ํŠน์ง• :
- ์ž๋™ ์„ค์ •(Auto-Configuration) : ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ์„ค์ •์„ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•ด์คŒ
- ๋‚ด์žฅ ์›น ์„œ๋ฒ„ ์ œ๊ณต : Tomcat, Jetty ๋“ฑ์˜ ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅ
- ์˜์กด์„ฑ ๊ด€๋ฆฌ ์šฉ์ด : Spring Starter๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ด
- ์šด์˜ ํ™˜๊ฒฝ๋ณ„ ์„ค์ • ์ง€์› : application.properties ์™€ application.yml ํ™œ์šฉ

 


 

2. ์Šคํ”„๋ง๊ณผ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ฐจ์ด์ 

๊ตฌ๋ถ„ ์Šคํ”„๋ง (Spring) ์Šคํ”„๋ง ๋ถ€ํŠธ (Spring Boot)
์„ค์ • ๋ฐฉ์‹ ์ˆ˜๋™ ์„ค์ •์ด ๋งŽ์Œ ์ž๋™ ์„ค์ • ์ง€์› (Auto-Configuration)
์›น ์„œ๋ฒ„ ์™ธ๋ถ€ ์„œ๋ฒ„ ์„ค์ • ํ•„์š” ๋‚ด์žฅ ์„œ๋ฒ„(Tomcat ๋“ฑ) ๊ธฐ๋ณธ ์ œ๊ณต
์˜์กด์„ฑ ๊ฐœ๋ณ„ ๋ชจ๋“ˆ ์„ ํƒ Spring Starter๋กœ ํ†ตํ•ฉ ์˜์กด์„ฑ ๊ด€๋ฆฌ
๋ฐฐํฌ ์†๋„ ์„ค์ •์— ๋งŽ์€ ์‹œ๊ฐ„ ์†Œ์š” ๋น ๋ฅธ ์ดˆ๊ธฐํ™” ๋ฐ ๋ฐฐํฌ

 

์˜ˆ์‹œ : ์Šคํ”„๋ง์—์„œ๋Š” Tomcat ์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ ์„ค์น˜ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋‚ด์žฅ๋œ Tomcat ์„œ๋ฒ„๋กœ ๋ฐ”๋กœ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋ฒ„ ์„ค์ •์— ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ฐœ๋ฐœ ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 


 

3. Spring Initializr๋กœ ์ฒซ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ

์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•œ ๋ฐฉ๋ฒ•์€ Spring Initializr ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Spring Initializr ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

https://start.spring.io๐Ÿ‘†

  1. ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    - Project : Maven ๋˜๋Š” Gradle ์„ ํƒ
    - Language : Java ์„ ํƒ
    - Spring Boot Version : ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „ ์„ ํƒ (์˜ˆ: 3.0.0)
    - Dependencies : Spring Web, Spring Data JPA ์„ ํƒ
  2. Generate ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์šด๋กœ๋“œํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ IDE(IntelliJ, Eclipse ๋“ฑ)์— ์—ด์–ด์ค๋‹ˆ๋‹ค.

 


 

4. ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ฃผ์š” ์„ค์ • ํŒŒ์ผ๊ณผ ์‚ฌ์šฉ๋ฒ•

์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์—๋Š” ์ฃผ๋กœ application.properties ๋˜๋Š” application.yml ํŒŒ์ผ๋กœ ์„ค์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—์„œ ํฌํŠธ ๋ฒˆํ˜ธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ •๋ณด, ๋กœ๊น… ์„ค์ • ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

application.properties ์˜ˆ์ œ

server.port=8081
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password

 

์Šคํ”„๋ง ๋ถ€ํŠธ(SPRING BOOT) ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์„ค์ •์„ ๊ฐ„์†Œํ™”ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น ๋ฅด๊ฒŒ ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€์˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ •์˜์™€ ํŠน์ง• , ์Šคํ”„๋ง๊ณผ์˜ ์ฐจ์ด์  , ๊ทธ๋ฆฌ๊ณ  Spring Initializr๋กœ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 


 

5. ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ Hello World ์˜ˆ์ œ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

์•„๋ž˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ๊ฐ„๋‹จํ•œ Hello World API ๋ฅผ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

HelloController.java

package com.example.demo;

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

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

์„ค๋ช…

  1. @RestController : ์ด ํด๋ž˜์Šค๊ฐ€ REST API์˜ ์ปจํŠธ๋กค๋Ÿฌ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  2. @GetMapping("/hello") : /hello ๊ฒฝ๋กœ๋กœ GET ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  3. ์‘๋‹ต : ํด๋ผ์ด์–ธํŠธ๊ฐ€ /hello ๊ฒฝ๋กœ๋กœ ์ ‘์†ํ•˜๋ฉด “Hello, Spring Boot!” ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ ํ›„, ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8080/hello ์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
  2. “Hello, Spring Boot!” ๋ฉ”์‹œ์ง€๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 


 

์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์„ฑ์žฅ๊ณผ ํŠธ๋ Œ๋“œ

  • ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” 2014๋…„ ์ถœ์‹œ ์ดํ›„ ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๋†’์€ ์ƒ์‚ฐ์„ฑ ๋•๋ถ„์— ๊พธ์ค€ํžˆ ์ธ๊ธฐ๋ฅผ ๋Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 2024๋…„ ๊ธฐ์ค€์œผ๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ์™€ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ์— ํ•„์ˆ˜์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค.
  • JetBrains์˜ Java ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ ์กฐ์‚ฌ ์— ๋”ฐ๋ฅด๋ฉด, 60% ์ด์ƒ์˜ ๊ฐœ๋ฐœ์ž ๊ฐ€ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๊ณ  ์‘๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค.

 


 

๊ด€๋ จ ๋งํฌ

 

Spring ๊ณต์‹ ๋ฌธ์„œ๐Ÿ‘†

Spring Initializr๐Ÿ‘†

์Šคํ”„๋ง ๋ถ€ํŠธ GitHub๐Ÿ‘†

IntelliJ์—์„œ ์Šคํ”„๋ง ๋ถ€ํŠธ ์„ค์ •๐Ÿ‘†

์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๐Ÿ‘†

์Šคํ”„๋ง ๋ถ€ํŠธ ์ตœ์‹  ๋ฒ„์ „ ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ๐Ÿ‘†

 


 

FAQ

 

1. ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์™œ ์ธ๊ธฐ๊ฐ€ ๋งŽ๋‚˜์š”?

  • ์„ค์ •์ด ๊ฐ„๋‹จํ•˜๊ณ , ๋‚ด์žฅ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

2. ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์— ์–ด๋–ค ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋‚˜์š”?

  • Spring Web, Spring Data JPA, Spring Security๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

3. ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ์Šคํ”„๋ง์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ž๋™ ์„ค์ •๊ณผ ๋‚ด์žฅ ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ž…๋‹ˆ๋‹ค.

4. ์–ด๋–ค IDE๊ฐ€ ์Šคํ”„๋ง ๋ถ€ํŠธ ๊ฐœ๋ฐœ์— ๊ฐ€์žฅ ์ข‹๋‚˜์š”?

  • IntelliJ IDEA๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, Eclipse๋„ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

5. ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋‚˜์š”?

  • application.properties ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 


์ด์ œ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์„ค์ •์— ๋Œ€ํ•ด ์ž˜ ์ดํ•ดํ•˜์…จ๋‚˜์š”? ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ํ™œ์šฉํ•ด ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”!

๋Œ“๊ธ€