์ฐ์ ๊ธฐ๋ก ๐ช
์ฝ๋ํ๋ ์ ์ฒดํ๋จ 6-1 : Spring Boot ์น ๊ฐ๋ฐ ์ ๋ฌธ ๋ณธ๋ฌธ
์ด๋ฒ ๊ฐ์์์๋ ๋ฐฑ์๋์ ๋ํ ๊ธฐ์ด์ ์ธ ์ง์๊ณผ Spring Boot์ ๊ฐ๋จํ ์ด๋ก ๊ณผ ์ค์ต์ ๋ํด ๋ค๋ฃจ๊ณ ์๋ค. ๋ด์ฉ์ด ๋ง์ 2๊ฐ์ ๊ธ์ ๋๋ ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
IP์ Port์ ๊ฐ๋
์ผ๋ฐ์ ์ผ๋ก Client, ์ฆ ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ ์์ฒญ์ ํ๊ณ , ์๋ฒ๊ฐ ์ด ์์ฒญ์ ๋ํด ์๋ต์ ํ๋ฉด ์ด๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํ๋ค. ์ด๋ ์ ์ธ๊ณ์๋ ๊ต์ฅํ ๋ง์ ์์ ์๋ฒ๋ค์ด ์๋๋ฐ ์ฐ๋ฆฌ๊ฐ ์์ฒญ์ ํ ์๋ฒ, ์ฆ host์ ์ฃผ์๋ฅผ IP์ฃผ์ ๋ผ๊ณ ํ๋ค.
์ด๋ฌํ IP์ฃผ์๋ ๊ณต์ธ(Public) IP์ฃผ์์ ์ฌ์ค(Private) IP์ฃผ์, 2๊ฐ์ง๋ก ๋๋์ด์ง๋ค. ๊ทธ ํน์ง๋ค์ ์๋์ ๊ฐ๋ค.
๊ณต์ธ IP์ฃผ์
- ์ธํฐ๋ท ์์ ๊ณ ์ ํ IP ์ฃผ์
- IP์ฃผ์๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๊ด์ผ๋ก๋ถํฐ ํ ๋น๋ฐ์ ์ฌ์ฉ๊ฐ๋ฅ
- ๋๋ฅ๋ณ, ๊ตญ๊ฐ๋ณ ํ ๋น๋ฐ์ ๊ณต์ธ IP์ฃผ์๊ฐ ์กด์ฌ
- ๋๊ตฌ๋ ์ ์ ๊ฐ๋ฅํด์ผํ๋ ์น ์๋ฒ ๋ฑ์ ๊ณต์ธ IP์ฃผ์๊ฐ ํ์
์ฌ์ค IP์ฃผ์
- ํน์ ์กฐ์ง ๋ด๋ถ์์ ์ฌ์ค ๋คํธ์ํฌ ์์์๋ง ํต์ ๊ฐ๋ฅํ IP์ฃผ์
- ์ฌ์ค ๋คํธ์ํฌ ๋ด๋ถ์์๋ ์ฌ์ค IP๋ก ํต์ ๊ฐ๋ฅํ๋, ์ธ๋ถ์์๋ ์ฌ์ค IP๋ก ๊ธฐ๊ธฐ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅ
→ํ์ฌ์ ๋์ผํ ๊ณต์ ๊ธฐ์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ ๊ฐ์๋ ์ฌ์ค IP๋ก ํต์ ๊ฐ๋ฅ
→์ธ๋ถ์์๋ ๊ทธ ํ์ฌ ์ปดํจํฐ์ ์ฌ์ค IP๋ก ํต์ ๋ถ๊ฐ - ์ฌ์ค ๋คํธ์ํฌ ๊ฐ์๋ ์ฌ์ค IP๊ฐ ์ค๋ณต๋์ด๋ ๋ฌด๋ฐฉํจ
→Aํ์ฌ์ ์ฌ์ค IP 192.0.0.1๊ณผ Bํ์ฌ์ ์ฌ์ค IP 192.0.0.1 ์ค๋ณต ๋์ด๋ ๋จ
→ํ์ฌ ๋ด๋ถ์์๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ
๋ IP์ฃผ์๋ค์ ์ฌ๋์ด ์ธ์ฐ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์(๋ณดํต 30.129.75.143 ์ด๋ฐ์์ผ๋ก ์๊ฒผ๋ค.) ์ด๋ฅผ ์ฌ๋์ด ์ฝ๊ณ ์ธ์ฐ๊ธฐ ์ฌ์ด ํํ๋ก ๋ง๋ค๊ธฐ ์ํด ํธ์คํธ๋ช ์ด๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๋ค. ์๋์ ๊ฐ์ ๊ฒ๋ค์ ํธ์คํธ๋ช ์ด๋ผ๊ณ ํ๋ค.
blog.naver.com
news.google.com
์ด๋ฌํ ํธ์คํธ๋ช ์ค์์๋ “ํ์ฌ ์์ ์ ์ํ ์ค์ธ ๊ธฐ๊ธฐ๋ฅผ ์ง์นญ”ํ๋ ํน์ํ ํธ์คํธ๋ช ๋ ์๋๋ฐ ์ด๋ฅผ localhost๋ผ๊ณ ํ๋ค. IP์ฃผ์๋ก๋ 127.0.0.1์ด๋ค.
์ด์ ๋ ํฌํธ์ฃผ์์ ๋ํด ์์๋ณด๋๋ก ํ์. IP์ฃผ์๋ ํน์ ํธ์คํธ(๊ธฐ๊ธฐ)๊น์ง์ ์ฃผ์์๋๋ฐ, Port๋ ํธ์คํธ ๋ด๋ถ ํ๋ก์ธ์ค์ ๋คํธ์ํฌ ์ฃผ์์ด๋ค. ๋ณดํต :๋ค์ ํฌํธ์ฃผ์๊ฐ ์จ๋ค. ์๋ ๊ทธ๋ฆผ์ ๋ณด๊ณ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค. ์๋ ๊ทธ๋ฆผ์์ 30.129.75.143์ IP์ฃผ์, 80์ ํฌํธ์ฃผ์์ด๋ค.
๊ณ์ธตํ ์ํคํ ์ณ
์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ์ํํธ์จ์ด๋ ์ด์ ์ ์๋ง์ ์ฌ๋๋ค์ด ๊ณ ๋ฏผํ๊ณ ๋ง๋ค์๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๋ฐ๋ผ์ ํน์ ์ํฉ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ผ๋ฐํ ๋ ์๋ฃจ์ ์ด ์กด์ฌํ๋๋ฐ ์ด๊ฒ์ SW์ํคํ ์ณ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋ฅผ๋ค์ด ๋ฉ์ ์ ์๋น์ค ๊ฐ๋ฐ์ ์ํ ํจํด, ์น ์๋น์ค ๊ฐ๋ฐ์ ์ํ ํจํด, ๋ฐ์ดํฐ ๋ถ์ ์์คํ ๊ฐ๋ฐ์ ์ํ ํจํด ๋ฑ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ด๋ค.
๊ฐ์ฅ ๋ณดํธ์ ์ธ ๊ณ์ธตํ ์ํคํ ์ฒ ํจํด์ 4๊ฐ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๊ฐ ๊ณ์ธต์ ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค. ๊ณ์ธต ๊ฐ์ ํธ์ถ์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์ ์ฒด ์น ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋๋ค.
Spring Controller
Spring Controller๋ ๊ณ์ธตํ ์ํคํ ์ฒ์ Presentation Layer์ ํด๋นํ๋ค. ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ , ๋ชจ๋ฐ์ผ ์ฑ)์ ์์ฒญ์ ๋ฐ๊ณ , Application Layer์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ฉฐ, Client์ ์ต์ข ์๋ต์ ํ๋ ์ญํ ์ ํ๋ค. ์ด๋ ์ต์ข ์๋ต์ ๊ฒฝ์ฐ๋ ์๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
View : Client๊ฐ ์์ฒญ์ ๋ํ ์๋ต์ ๊ฒฐ๊ณผ๋ก ๋ณด๊ฒ ๋๋ ์น ํ์ด์ง
Data : Client๊ฐ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ๋ฐ๋ ๋ฐ์ดํฐ
์์ ๊ฐ์ Spring Controller๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ 3๊ฐ์ ๊ธฐ๋ณธ ์ด๋ ธํ ์ด์ (Annotaion)์ด ์ฌ์ฉ๋๋ค. @Controller์ @RestController๋ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ ํด๋์ค๋ฅผ ์ง์ ํ๋ฉฐ, ํด๋์ค ์๋จ์ ๋ช ์ํ๋ค. @RequestMapping์ ํน์ Request๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ์ง์ ํ๋ฉฐ, ํด๋์ค ๋๋ ๋ฉ์๋ ์๋จ์ ๋ช ์ํ๋ค.
์ด๋ ธํ ์ด์ (Annotation)์ด๋?
Java ์์ค์ฝ๋์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ผ๋ก, @์ผ๋ก ์์ํ๋ฉฐ ํด๋์ค, ๋ฉ์๋, ๋ฉค๋ฒ๋ณ์, ํ๋ผ๋ฏธํฐ ๋ฑ์ ๋ถ์ฐฉ์ด ๊ฐ๋ฅํ๋ค. 3๊ฐ์ง ์ ํ์ ์ด๋ ธํ ์ด์ ์ด ์๋ค.
1. ์๋ฐ ์ปดํ์ผ๋ฌ์๊ฒ ์ ๋ณด๋ฅผ ์ ๊ณต(์๋ฌ ๋ฑ์ ์ฐพ์๋ด๊ธฐ ์ํด)
2. SW ํด์ ์ํด ์ฌ์ฉ๋์ด ์ฝ๋ ์์ฑ์ด๋ ์ถ๊ฐ ์์ ์ ์งํ
3. run-time์ ํน์ ๋์์ ์ถ๊ฐ์ ์ผ๋ก ์คํ
Framework๋ฅผ ํ์ฉํ๋ค๋ ๊ฒ์ ๊ท์น์ ์งํค๋ ๊ฒ์ด๋ค. ์์์ ์ฌ์ฉํ ์ด๋ ธํ ์ด์ ๋ค์ Spring Framework๊ฐ ์ค์บํ๊ณ , ์ด๋ฌํ ์ด๋ ธํ ์ด์ ๋ค์ด ๋ถ์ด์๋ ์ฝ๋๋ค์ Spring Framework์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, ํน์ ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
์์์ @Controller์ @RestController๋ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ ํด๋์ค๋ฅผ ์ง์ ํ๋ค. ๋ผ๊ณ ํ๋๋ฐ ๋์ ์ฐจ์ด์ ์ ์๋ต์ ํํ๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๋ค.
Controller : view๋ฅผ ์๋ต(html ํ์ผ ๋ฑ)
RestController : data๋ฅผ ์๋ต(๋ฌธ์์ด, Json, xml ๋ฑ)
Spring Service
Spring Serviec๋ ์์คํ ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ๊ณ์ธต์ด๋ค. SNS์์คํ ์ ๊ฒฝ์ฐ ์๋ ๊ธฐ๋ฅ๋ค์ ๋ด๋นํ๋ค.
- ์ด๋ฏธ์ง, ๊ธ ๋ฑ์ ์ปจํ ์ธ ์ ๋ณด๋ฅผ ์ ์ฅ
- ์ฌ์ฉ์๊ฐ ์ ํธํ ๋งํ ์ปจํ ์ธ ๋ฅผ ์ถ์ฒ
- ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ํ์ ํํด ๋ฑ์ ํ์ ๊ด๋ จ ์ฒ๋ฆฌ
์ฆ view์ ์ข ๋ฅ์ database ์ข ๋ฅ์ ์ํฅ์ ๋ฐ์ง ์๋ ๋ ๋ฆฝ์ ์ธ ๊ณ์ธต์ด๊ธฐ ๋๋ฌธ์ ์ด์ ์ํฅ์ ๋ฐ์ง ์๋๋ก ์ค๊ณํด์ผํ๋ค.
๊ตฌํํ๋ ค๋ฉด ํด๋์ค์ @Service Annotation์ ์ฌ์ฉํด์ผํ๋ค. Spring Service๋ Spring Controller์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ๋ถ ์์ญ ๋ณ๋ก ํด๋์ค๋ฅผ ์์ฑํด์ ๊ตฌํํ๋ค.
๋ค์ ๊ธ ๋ณด๋ฌ๊ฐ๊ธฐ
https://sectumsempra.tistory.com/120
๐์ฝ๋ํ๋ ์ Java ์น ๊ฐ๋ฐ ์ฒดํ๋จ ํ๋์ผ๋ก ์ ๊ณต๋ฐ์ ๊ฐ์์ ๋๋ค.
๐์ฝ๋ํ๋ ์์์ "Spring Boot ์น ๊ฐ๋ฐ ์ ๋ฌธ" ๊ฐ์๋ฅผ ์๊ฐ ํ ์์ฑํ ๊ธ์ ๋๋ค.
๐์ฝ๋ํ๋ ์ ๋ฐ๋ก๊ฐ๊ธฐ ๋งํฌ : https://www.codepresso.kr/
'WEB > Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฝ๋ํ๋ ์ ์ฒดํ๋จ 7 : ์ฒ์ ์์ํ๋ SQL ํ๋ก๊ทธ๋๋ฐ (0) | 2022.02.04 |
---|---|
์ฝ๋ํ๋ ์ ์ฒดํ๋จ 6-2 : Spring Boot ์น ๊ฐ๋ฐ ์ ๋ฌธ (0) | 2022.02.04 |
[Source Tree + Github] ๋ธ๋์น ๋ง๋ค๊ธฐ, Merge ํ๊ธฐ (0) | 2022.01.28 |
[SpringBoot+JDBC] sql like ์ฟผ๋ฆฌ๋ฌธ ์ฌ์ฉํ๊ธฐ (0) | 2022.01.25 |
์ฝ๋ํ๋ ์ ์ฒดํ๋จ 5 : SW ์ ์ง๋ณด์์ฑ ํฅ์์ ์ํ Clean Code (0) | 2022.01.24 |