์ค๋์ ์ฃผ์์ฌํญ (6/12, ์์์ผ)
- Spring ์ ๋ฌธ ์ฃผ์ฐจ ๋ฐ์
- ์๋ก์ด ํ ํธ์ฑ
์์นจ์ ์ผ์ด๋๋๊น ๋๋ฌด ํผ๊ณคํด์... ๋ฑ ์ค์๋ง ํ๊ณ ์ค์~ ํ๋ ๋ง์์ผ๋ก ํฌ์ค์ฅ์ ๋์ฐฉํ๋๋ ๋์ฐฉํ์๋ง์ ์ ์ ์ด ๋ง์์ ธ์ ์ด๋๊น์ง ํ๊ณ ์์ต๋๋ค
Gradle
= ๋น๋ ์๋ํ ์์คํ
์ฐ๋ฆฌ๊ฐ ์์ฑํ Java ์ฝ๋๋ฅผ ์ค์ ์ ๋ง๊ฒ ์๋์ผ๋ก Build ํด์ค๋ค.
Gradle
์ ์ฌ์ฉํ๋ฉด ๊ฐํธํ๊ฒ Java ์์ค ์ฝ๋๋ฅผ ์คํํ ๊ฐ๋ฅํ jar
ํ์ผ๋ก ๋ง๋ค์ด์ค๋ค.
build.gradle
=Gradle
๊ธฐ๋ฐ์ ๋น๋ ์คํฌ๋ฆฝํธ
์ด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ฉด ์์ค ์ฝ๋๋ฅผ ๋น๋ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์์กด์ฑ์ ์ฝ๊ฒ ๊ด๋ฆฌ
ํ ์ ์๋ค.
์์กด์ฑ์ ์๋์ผ๋ก ๊ด๋ฆฌํด ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ฐ์ ์ถฉ๋ ๊ฑฑ์ ์์ด ๊ฐ๋ฐ์๋ง ์ง์คํ ์ ์๋ค.
groovy
ํน์ kotlin
์ธ์ด๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ์ ์๋ค.
dependencies
(1) ํ์ํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ dependencies
์ ์์ฑ โ (2) Gradle
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ Maven Repository๏ผ์ ๊ฐ์ ์ธ๋ถ ์ ์ฅ์์์ ์๋์ผ๋ก ๋ค์ด๋ก๋
๏ผMaven Repository: ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ชจ์๋ ์ ์ฅ์. ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ฉด ๊ฒ์ํด์ ์ฌ์ฉํด๋ณด์ธ์ (^^)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Postman
์ด๋ API ๊ฐ๋ฐ์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ฃผ๋ ์ํํธ์จ์ด ํ๋ซํผ.
https://www.postman.com/downloads/
Name | Method | URL | ์ค๋ช |
---|---|---|---|
์ธ์ฌ | GET | /api/hello | Hello World! ๋ฅผ ์ถ๋ ฅ |
๏ผ ์ ๋ ธํ ์ด์ ์ฐธ๊ณ
@RestController
@GetMapping("/api/hello")
package com.sparta.springprepare.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/api/hello")
public String hello() {
return "Hello World!";
}
}
Spring์์๋ 'ํ ์คํธ ์ฝ๋' ์ ์์ฑํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ Java์ฉ ๋จ์ ํ
์คํธ ํ๋ ์์ํฌ
์ธ JUnit
์ ์ฌ์ฉํ๋ค. JUnit
์ ํตํด ํ
์คํธ๋ฅผ ์คํํ ๋๋ main()
๋ฉ์๋๋ฅผ ์คํํ๊ฑฐ๋ ์๋ฒ๋ฅผ ์คํ์ํค์ง ์์๋ ๊ฐ๊ฐ์ ๋ฉ์๋ ํน์ ๊ธฐ๋ฅ๋ณ๋ก ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์คํ์ํฌ ์ ์๋ค. (JUnit์ ํ
์คํธ ์คํ ํ๊ฒฝ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค)
ํ์ํ ๋ฉ์๋/์์ฑ์ ๋ฑ์ ์๋ ์์ฑํด์ค์ผ๋ก์จ ์ฝ๋๋ฅผ ์ ์ฝํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
@Getter // getter ๋ฉ์๋๋ฅผ ์์ฑ
@Setter // setter ๋ฉ์๋๋ฅผ ์์ฑ
public class Memo {
private String username;
private String contents;
}
@Getter
์ @Setter
์ธ์๋ ๋ค์ํ ์ ๋
ธํ
์ด์
๋ค์ ์ฌ์ฉํ ์ ์๋ค.
@NoArgsConstructor // ๊ธฐ๋ณธ ์์ฑ์
@AllArgsConstructor // ๋ชจ๋ ํ๋๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ์ง ์์ฑ์ (์ค๋ฒ๋ก๋ฉ ๋จ)
@RequiredArgsConstructor // final ์ ์ด์๊ฐ ๋ถ์ ํ๋๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ์ง ์์ฑ์ (์ค๋ฒ๋ก๋ฉ ๋จ)
Servlet(์๋ธ๋ฆฟ)
์ Java๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ์๋ฒ ์ธก ํ๋ก๊ทธ๋จ ํน์ ๊ทธ ์ฌ์์ ๋งํ๋ค.
Spring
์DispatcherServlet
์ ์ฌ์ฉํ Front Controller ํจํด ๋ฐฉ์์ผ๋ก API ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์๋ค.