@RequestMapping ๋์ @PostMapping @GetMapping ์ฐ๋ ์ด์ ๊ฐ ๊ถ๊ธํ๋ค. ๊ตฌ๊ธ๋ง์ผ๋ก ์ฌ๋ฌ ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์๋ดค์ง๋ง "์ฝ๋๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ"์ด๋ผ๋ ์งค๋งํ ๋ต๋ณ์ด ๋๋ถ๋ถ์ด์๋ค. @RequestMapping(value="๊ฒฝ๋ก", method=RequestMethod.GET) @RequestMapping(value="๊ฒฝ๋ก", method=RequestMethod.POST) ์ด๋ ๊ฒ ๊ธด ์ฝ๋๊ฐ @GetMapping("๊ฒฝ๋ก") @PostMapping("๊ฒฝ๋ก") ์ด๋ ๊ฒ ์งง์์ง๋ค๋ ์ค๋ช
์ด๋ค. ์ฐธ๊ณ ๋ก @GetMapping๊ณผ @PostMapping ์ด๋
ธํ
์ด์
์ @PutMapping, @DeleteMapping, @PatchMapping๊ณผ ํจ๊ป ์คํ๋ง 4.3๋ถํฐ ๋ฑ์ฅํ๋ค. ํ๋ฆฐ ๋ง์ ์๋์ง๋ง ์ด๊ฑด ์ง๋ฌธ..
Backend๐ฑ/Spring
1. REST๋? "ํ๋์ URI๋ ํ๋์ ๊ณ ์ ํ ๋ฆฌ์์ค๋ฅผ ๋ํํ๋๋ก ์ค๊ณ๋๋ค." REST(Representational State Transfer) ๋ ์์์ ์ด๋ฆ(์์์ ํํ)์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ(์ ๋ณด)๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ ์์์ ํํ๊ณผ ์ํ(์ ๋ณด) ์ ๋ฌ์ ํ๋ ๊ฒ URI๋ฅผ ํตํด ์์์ ๋ช
์ํ๊ณ , HTTP Method(GET, POST, DELETE, PUT...)๋ฅผ ํตํด ์์์ ๋ํ ํ์(CRUD Operation)๋ฅผ ์ ์ฉํ๊ณ ์์์ JSON, XML, TEXT ... ๋ค ์ฌ๋ฌ ํํ์ ํํ์ผ๋ก ๋ํ๋ด์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. CRUD Operation Create : ์์ฑ(POST) Read : ์กฐํ(GET) Update : ์์ (PUT, PATCH) Delete : ์ญ์ (DE..
@RequestMapping์ DefaultAnnotationHandlerMapping์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ํํ ๋ ๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ ๋
ธํ
์ด์
์ด๋ค. url๋น ํ๋์ ์ปจํธ๋กค๋ฌ์ ๋งคํ๋๋ ๋ค๋ฅธ ํธ๋ค๋ฌ ๋งคํ๊ณผ ๋ฌ๋ฆฌ ๋ฉ์๋ ๋จ์๊น์ง ์ธ๋ถํํ์ฌ ์ ์ฉํ ์ ์์ผ๋ฉฐ, url ๋ฟ ์๋๋ผ ํ๋ผ๋ฏธํฐ, ํค๋ ๋ฑ ๋์ฑ ๋์ ๋ฒ์๋ฅผ ์ ์ฉํ ์ ์๋ค. ๐ฑ์์ฑ DefaultAnnotationHandlerMapping์ ํด๋์ค์ ๋ฉ์๋์ ๋ถ์ @RequestMapping ์ ๋
ธํ
์ด์
์ ๋ณด๋ฅผ ๊ฒฐํฉํด ์ต์ข
๋งคํ์ ๋ณด๋ฅผ ์์ฑํ๋ค. ๊ธฐ๋ณธ์ ์ธ ๊ฒฐํฉ ๋ฐฉ๋ฒ์ ํด๋์ค ๋ ๋ฒจ์ @RequestMapping์ ๊ธฐ์ค์ผ๋ก ์ผ๊ณ , ๋ฉ์๋ ๋ ๋ฒจ์ @RequestMapping์ผ๋ก ์ธ๋ถํํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๋ค. @RequestMapping์ ์ฌ์ฉํ ์ ์๋ ์์ฑ๋ค์..
์ปจํธ๋กค๋ฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ธ์์ ํ ๋นํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ @RequestBody ์ @RequestParam ์ด ์๋ค. @Controller public class UserController { @PostMapping("/receive") public String age(@RequestParam String name) { System.out.println("ํต์ ์ฑ๊ณต"); System.out.println(">>> " + name); return "index"; } } @Controller public class UserController { @PostMapping("/receive") public String age(@RequestBody String name) { System.out.println("..
@RequestMapping ๋์ @PostMapping @GetMapping ์ฐ๋ ์ด์ ๊ฐ ๊ถ๊ธํ๋ค. ๊ตฌ๊ธ๋ง์ผ๋ก ์ฌ๋ฌ ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์๋ดค์ง๋ง "์ฝ๋๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ"์ด๋ผ๋ ์งค๋งํ ๋ต๋ณ์ด ๋๋ถ๋ถ์ด์๋ค. @RequestMapping(value="๊ฒฝ๋ก", method=RequestMethod.GET) @RequestMapping(value="๊ฒฝ๋ก", method=RequestMethod.POST) ์ด๋ ๊ฒ ๊ธด ์ฝ๋๊ฐ @GetMapping("๊ฒฝ๋ก") @PostMapping("๊ฒฝ๋ก") ์ด๋ ๊ฒ ์งง์์ง๋ค๋ ์ค๋ช
์ด๋ค. ์ฐธ๊ณ ๋ก @GetMapping๊ณผ @PostMapping ์ด๋
ธํ
์ด์
์ @PutMapping, @DeleteMapping, @PatchMapping๊ณผ ํจ๊ป ์คํ๋ง 4.3๋ถํฐ ๋ฑ์ฅํ๋ค. ํ๋ฆฐ ๋ง์ ์๋์ง๋ง ์ด๊ฑด ์ง๋ฌธ..
Spring HelloController.java package com.sto.salepurchase.backstosalepurchase; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Arrays; import java.util.List; @RestController public class HelloController { @GetMapping("hello") public List Hello(){ return Arrays.asList("์๋ฒ ํฌํธ๋ 8080", "๋ฆฌ์กํธ ํฌํธ๋ 3000"); } } main..
1. srping boot ๊ธฐ๋ณธ์ค์ ํ๊ธฐ spring initalizar๋ก ํ๋ก์ ํธ ์์ฑํด๋๊ธฐ (dependency๋ web๋ง ์ถ๊ฐ) 2. REST API ํ
์คํธํด๋ณด๊ธฐ RestController๊ฐ ํต์ฌ /api/test์์ ํ์ธ 3.React ์ค์น ์ค์น๋ช
๋ น์ด npx create-react-app frontend ์ค์น์๋ฃ : ๋ณด๋ฉด frontend ํด๋๊ฐ ํ๋ ์๊ฒผ๋ค 4.React ์คํ /frontend ๊ฒฝ๋ก์๊ฐ์ npm start ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ๋ฐ๋ก ์คํ์ด ๋๋ฉฐ ๋ฆฌ์กํธ ์ด๊ธฐํ๋ฉด์ด ๋์ค๋ฉด ์ฑ๊ณต! npm start react ์คํ์ฑ๊ณต 5.CORS๋ฌธ์ ํด๊ฒฐํ๊ธฐ ์คํ๋ง๋ถํธ์ ๋ฐฑ์๋๋ 8080์์ ์คํ๋๊ณ , React์ ํ๋ก ํธ์๋๋ 3000์์ ์คํํ๊ณ ์๋ค. ์ด๋ CORS(cross-orgin requests)๊ฐ..
์์กด์ฑ์ ์ฃผ์
ํ๋ ๋ฐฉ๋ฒ ์คํ๋ง ํ๋ ์์ํฌ์์ ์์กด์ฑ์ ์ฃผ์
ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ด ์์๊น? @Autowired ๋ฅผ ์ฌ์ฉํ๋ ํ๋ ์ฃผ์
์ด๋ ์์ ์ ์ฃผ์
๋ฐฉ๋ฒ๋ณด๋ค ์์ฑ์ ์ฃผ์
์ ๋ ๊ถ์ฅํ๋ ์ด์ ๋ฅผ ์์๋ณด์. ํ์ง๋ง ๊ทธ์ ์ ์คํ๋ง ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ์์กด์ฑ ์ฃผ์
๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณผ ํ์๊ฐ ์๋ค. ์ฐ์ ๋ฑ๋ก๋ ๋น์ ์ฌ์ฉํ๊ธฐ ์ํ ์คํ๋ง ํ๋ ์์ํฌ์ DI(Dependency Injection) ๋ฐฉ๋ฒ์ 3๊ฐ์ง๋ค. 1. ์์ฑ์ ์ฃผ์
(Constructor Injection) ์ด๋ฒ ํฌ์คํ
์ ์ฃผ์ ์ด์ ์คํ๋ง ํ์์๋ ๊ถ์ฅํ๋ ๋ฐฉ์์ด๋ค. ์คํ๋ง ํ๋ ์์ํฌ 4.3 ๋ฒ์ ๋ถํฐ๋ ์์กด์ฑ ์ฃผ์
์ผ๋ก๋ถํฐ ํด๋์ค๋ฅผ ์๋ฒฝํ๊ฒ ๋ถ๋ฆฌํ ์ ์๋ค. ๋จ์ผ ์์ฑ์์ธ ๊ฒฝ์ฐ์๋ @Autowired ์ด๋
ธํ
์ด์
์กฐ์ฐจ ๋ถ์ด์ง ์์๋ ๋์ง๋ง ์์ฑ์๊ฐ 2๊ฐ ์ด..
๋จ์ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋์ค Junit4์์ ์ฌ์ฉํ๋ @RunWith(SpringRunner.class)๋ผ๋ ์ด๋
ธํ
์ด์
์ ์ง์์ ์ผ๋ก ์ฌ์ฉํด์ฃผ์๋๋ฐ ๋ช ๊ฐ์ง ์๋ฌธ์ ์ด ์๊ฒจ์ ์ ๋ฆฌํ๊ณ ์ ํฉ๋๋ค. ์๋ฌธ์ ์ ์๋์ ๊ฐ์ต๋๋ค. @SpringBootTest๊ฐ ์๋ @RunWith(SpringRunner.class)๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?? @RunWith์ ๋๋ถ์ด @RunWith(SpringRunner.class) -> ์ ํํ ๋ฌด์จ ์ญํ ์ ํ๋์ง?? ๋๋ต์ ์๋์ ๊ฐ์ต๋๋ค. 1. @SpringBootTest๋ฅผ ์ฌ์ฉํ๋ฉด application context๋ฅผ ์ ๋ถ ๋ก๋ฉํด์ ์์นซ ์๋ชปํ๋ฉด ๋ฌด๊ฑฐ์ด ํ๋ก์ ํธ๋ก์์ ์ญํ ์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง Junit4์์ ์ง์ํ๋ @RunWith(SpringRunner.class)๋ฅผ ์ฌ์ฉํ..
1. ๊ฐ์ ์์กด์ฑ ์ฃผ์
์ด๋ ๊ฒ์ ํ ๋ @Autowired ๋์ ์์ฑ์ ์ฃผ์
์ ํ์ฉํ๋ฉด ์ข๋ค๊ณ ํฉ๋๋ค. ์ ๋ ๊ณต๋ถ ์ค์ด๋ผ ์คํ๋ง IoC, ๋น, ์์กด์ฑ ๊ฐ์ ๊ฐ๋
๋ค์ ์ ๋ชจ๋ฅด์ง๋ง ์ผ๋จ ๋ฐ๋ก ์ ์ฉํ ์ ์๋ ์์ฑ์ ์ฃผ์
๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ์ด๋ณด๊ฒ ์ต๋๋ค. 2. ์์กด์ฑ์ด ๋ญ๋ฐ? //HelloWorld.java class HelloWorld { private SayHello sayHello; public HelloWorld() { this.sayHello = new SayHello(); } public startHelloWorld() { this.sayHello.hello(); } } HelloWorld ํด๋์ค์์ helloํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ํด์๋ SayHello ํด๋์ค๊ฐ ํ์ํฉ๋๋ค. ์ด ๋ HelloWorld ํด..