Day 1

TDD๋ž€?

๐Ÿ‘‰ ํ…Œ์ŠคํŠธ๊ฐ€ ์ฃผ๋„ํ•˜๋Š” ๊ฐœ๋ฐœ

ํ•ญ์ƒ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ (Red),

ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š” ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ (Green),

ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง(Refactor)

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์ž‘์„ฑ์„ ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ : xUnit

๐Ÿ‘‰Why? ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

์œ„ํ‚คํ”ผ๋””์•„

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ๋‹จ๊ณ„ ์ดˆ๊ธฐ์— ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‚˜์ค‘์— ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๊ทธ๋ ˆ์ด๋“œ ๋“ฑ์—์„œ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ถˆํ™•์‹ค์„ฑ์„ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์‹ค์ œ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž์ฒด๊ฐ€ ๋ฌธ์„œ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๊ฒฝํ—˜๋‹ด

  • ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ

  • System.out.println()์„ ํ†ตํ•ด์„œ ๋ˆˆ์œผ๋กœ ๊ฒ€์ฆํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ โ‡’ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๊ฐ€ ์ž๋™ ๊ฒ€์ฆํ•ด์คŒ

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ๊ธฐ๋Šฅ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธ

๐Ÿ‘‰์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•ด๋ณด๊ธฐ

ํŒจํ‚ค์ง€ ์ƒ์„ฑ์‹œ, ํŒจํ‚ค์ง€ ๋ช…์€ ์›น ์‚ฌ์ดํŠธ ์ฃผ์†Œ์˜ ์—ญ์ˆœ์œผ๋กœ ์ง€์Œ

admin.jojoldu.com์˜ ์‚ฌ์ดํŠธ์˜ ํŒจํ‚ค์ง€ ๋ช… โ‡’ com.jojoldu.admin์œผ๋กœ ์„ค์ •

๐Ÿ‘‰์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

package com.kyu.book.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Application์ด ์•ž์œผ๋กœ์˜ ๋ฉ”์ธ ํด๋ž˜์Šค

@SpringBootApplication : ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ž๋™์„ค์ •, ์Šคํ”„๋ง bean ์ฝ๊ธฐ/์ƒ์„ฑ์„ ๋ชจ๋‘ ์ž๋™์œผ๋กœ ์„ค์ •

  • @SpringBootApplication annotation์ด ์žˆ๋Š” ์œ„์น˜๋ถ€ํ„ฐ ์„ค์ •์„ ์ฝ์Œ โ‡’ ์ด ํด๋ž˜์Šค๋Š” ํ•ญ์ƒ ํ”„๋กœ์ ํŠธ์˜ ์ตœ์ƒ๋‹จ์— ์œ„์น˜ํ•ด์•ผํ•จ

psvm์— ์žˆ๋Š” SpringApplication.run()์œผ๋กœ ๋‚ด์žฅ WAS(Web Application Server)๊ฐ€ ์‹คํ–‰๋จ(๋ณ„๋„์˜ ํ†ฐ์บฃ ์„ค์น˜๊ฐ€ ๋ถˆํ•„์š”)

package com.kyu.book.springboot.web;

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

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }
}

@RestController

  • ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ JSON์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค

@GetMapping

  • HTTP Method์ธ Get์˜ ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” API๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค

  • ๊ณผ๊ฑฐ์—๋Š” @RequestMapping์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์—ˆ์Œ

Last updated

Was this helpful?