๋ชจ๋ฅด๋ ๊ฒ์ด ์์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
์ถ์ฒ :
Dev.to ๊ฐ๋ฐ์๋ผ๋ฉด ์กฐ๋ง๊ฐ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๋ ์ํฉ์ด ๋ฐ์ํ์ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ๊ฒฝ๋ ฅ์ ์ด๋ ๋จ๊ณ์์๋ ๋งค์ฐ ๋ถ์พํ ์๊ฐ์
๋๋ค. ๊ฒฐ๊ตญ, ๋น์ ์ด ์๋ฌด๊ฒ๋ ๋ชจ๋ฅธ๋ค๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ ํ ์์
์ ์๋ฃํด์ผ ํฉ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ๊ฐ์ธ์ ์ธ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ๊ทธ๋ฌํ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ
์ ์ฐพ๋ ๋ฐ ๋ฌด์์ด ๋์์ด ๋ ์ง ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ง๋ฌธ
์ ๊ฐ ์ด๋ณด์์ ๋๋ ์ง๋ฌธํ๋ ๊ฒ์ด ๋๋ ค์ ๊ณ , ๋ง์ง๋ง ์๊ฐ๊น์ง ๋ชจ๋ ๊ฒ์ ์ค์ค๋ก ํด๊ฒฐํ๋ ค๊ณ ๋
ธ๋ ฅํ์ต๋๋ค. ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์์ฒญ๋ ์๊ฐ์ ์๋นํ๊ณ ๊ฒฐ๊ตญ ์์ฌ๋ ๊ณ ๊ฐ๊ณผ ๋ํํด์ผ ํ ๋๊น์ง ์นจ๋ฌต์ ์ง์ผฐ์ต๋๋ค. ๋๋ ๋ด๊ฐ ์ ๊ทธ๋ฐ ์ผ์ ํ๋์ง ์ดํดํ๋ค. ๋๋ ๋ค๋ฅธ ์ฌ๋๋ค ์์์ ๋ฐ๋ณด์ฒ๋ผ ๋ณด์ด๊ณ ์ถ์ง ์์๊ธฐ ๋๋ฌธ์ ์ง๋ฌธ์ ํผํ์ต๋๋ค. ๋๋ฅผ ์ ์ธํ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ณธ์ง์ ๋นจ๋ฆฌ ํ์
ํ๊ณ ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ์ดํดํ๋ ๊ฒ ๊ฐ์์ต๋๋ค. ์ ๊ฐ ๋๋์ด ์์กด์ฌ์ ์ ์ด๋๊ณ ์ดํด๊ฐ ์ ๋๋ ๋ถ๋ถ์ ์ง๋ฌธํ๊ฒ ๋ ๊ฒ์ ๋๋ฃ๋ค ๋๋ถ์ด์์ต๋๋ค.
Google๊ณผ YouTube๋ ๊ฐ์ฅ ์นํ ์น๊ตฌ์
๋๋ค.
๋๋ Google์ด ํฐ๋ฌด๋์๊ฑฐ๋ ์ฌ๋ฏธ์๋ ์ง๋ฌธ์ ์ด๋ป๊ฒ ๋๋ตํ๋์ง์ ๋ํ ๋น๋์ค๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค. ๋ต๋ณ๋ ๋งค์ฐ ์ฌ๋ฏธ์์์ง๋ง, ๊ถ๊ธํ ์ ์ด ์์ผ๋ฉด Google์ด ํ์คํ ๋์์ ์ค ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ง๋ค๋ฅธ ๊ณจ๋ชฉ์ ์ด๋ฅด๋ ๋ค๋ฉด, ์ด ๊ฒ์์์ง์ ํตํด ๋ต์ ์ฐพ์๋ณด๋ ๊ฒ์ ์์ง ๋ง์ธ์. YouTube๋ ๋ฌธ์ ํด๊ฒฐ์๋ ๋ง์ ๋์์ ์ค๋๋ค. ํนํ ์ฃผ์ ์ ๋ํ ๋ ๊น์ ์ดํด๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๋ ํ์ ์ฑ ์๋ ์์์ ์ฐพ์๋ณด๊ณค ํด์.
ํ ์์ ๋์ด ๋ ์์ผ๋ฉด ์ํ์ง ์์ ๊ฒ์
๋๋ค
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ๋ถ๋
ธ์ ์ข์ ์ ์ฌ๋ก์กํ์ง ๋ง์ญ์์ค. ์ด๋ฌํ ์ํฉ์ ๋ช
ํํ ์๋ ๋ฌธ์๊ฐ ๋ถ์กฑํ์ฌ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ ์ํํด์ผ ํ๋ ์ค๋๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ์
๋๋ค. ๋ฌผ๋ก ์ฌ๊ธฐ์๋ ๋ง์ ๋
ธ๋ ฅ์ด ํ์ํฉ๋๋ค. ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ์์ธํ ์ดํด๋ณด๊ณ ์ด์ ๊ฐ๋ฐ์์ ์คํ์ผ์ ์ดํดํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌํ ๊ฒฝ์ฐ์๋ ์์ ์ด ์๋ ๋ค๋ฅธ ์ฌ๋์ด ์ฝ๋๋ฅผ ๊ฒํ ํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋๋ฐฉ์ ๋น์ ์ด ๋์ณค๊ฑฐ๋ ์ดํดํ์ง ๋ชปํ ์ ์ ์ง์ ํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ํด๊ฒฐ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
๋ญ๊ฐ์ ๋งํ๋๋ผ๋ ์์ฑ
ํ์ง ๋ง์ธ์.
๋๋ ์ด๊ฒ์ ํน๋ณํ ๊ด์ฌ์ ๊ธฐ์ธ์ด๊ณ ์ถ์ต๋๋ค. ์ด๋๊ฐ์ ๊ฐํ๋๋ผ๋ ์์ ์๊ฒ ํ๋ฅผ ๋ด์ง ๋ง์ญ์์ค. ๋ค, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ๋ณ๋ก ์ฆ๊ฒ์ง ์์ต๋๋ค. ์ํฌ์คํฐ ์ฆํ๊ตฐ์ด ์
ํ๋ ์๋ ์๊ณ , ์์ ์ด ์ธ๋ชจ์๋ค๊ณ ๋๋ผ๋ฉฐ, ์์ ์ด ์ข์ ๊ฐ๋ฐ์๋ผ๋ ์์ ๊ฐ์ ์์ ์๋ ์์ต๋๋ค. ๋๋ ์ด๋ค ์ฌ๋์ด ์์ ์ ์ผ์์ ์ด๋ค ๊ฒ์ ๋งํ ์ ์ด ์๋ค๋ฉด ๊ทธ๊ฒ์ ๊ทธ๊ฐ ํ์์ ํ๋์ ๋์ด์์ง ์๊ณ ์์ ์ ์๋ฝํ ์์ญ์์ ํ๋ํ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ์์์น ๋ชปํ ์ํฉ์ ๋๋นํ๋ ค๋ฉด ๊ทํ์ ์ ๋ฌธ์ ๊ธฐ์ค์ ๋์ด๋๋ก ๊ฒฉ๋ คํ ์ ์๋ ์ฌ๋๋ค๊ณผ ์ํตํ์ญ์์ค. ์ค๋น๋์ง ์์ ์ผ์ด ๋ฐ์ํ๋๋ผ๋ ํ๋ฅผ ๋ด์ง ๋ง์ญ์์ค. ์ด๋ฌํ ์ฌ๋ก๋ ์ง์์ ๊ฒฉ์ฐจ๋ฅผ ํ์
ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ด๋ฅผ ์ฑ์ฐ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ํด์์ ์ทจํ๋ค
๋ณ๋ก ์์ฐ์ ์ด์ง ์์ ์๋ ์์ง๋ง, ํฌ๊ณ ๋ณต์กํ ์ผ์ ํ๊ณ ์์ ๋ ์งง์ ํด์์ ์ทจํ๋ ๊ฒ์ ์คํธ๋ ์ค ํด์์ ํฐ ๋์์ด ๋ฉ๋๋ค. 15๋ถ ๋์ ๊ฑท๊ณ , ๋๊ตฐ๊ฐ์ ๋ํํ๊ณ , ์ด๋ํ๊ณ , ์ฌ์ง์ด ๋ฎ์ ๋ ์๋ณด์ธ์. ํด์์ ๋ง์์ ์์พํ๊ฒ ํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ๊ฒ๋ค๊ฐ ์ด๋ฒ์๋ ๋๊ฐ ๊ณ์ ์๋ํ๊ณ ์ ์ฌ์์ ์์ค ์ด๋๊ฐ์์ ๋น๋ฉดํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ปคํผ๋ฅผ ๋ง์๋ ๊ฒ๋ง์ผ๋ก๋ ์ ๋ ์นด ์๊ฐ์ ๊ฒฝํํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
๋ฌธ์ ๋ฅผ ํ ๋ ๊ฐ์ฅ ๋จผ์ ํด์ผ ํ ์ผ์ ์๋ ๊ฒ๊ณผ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ชฉ๋ก์ ์์ฑํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ์์
์ ํ ๋นํ ์ฌ๋์๊ฒ ๋ช
ํํ ์ง๋ฌธ์ ํด์ผ ํฉ๋๋ค. ์๋ง๋ ์ด ๋จ๊ณ์์๋ ๋ญ๊ฐ๊ฐ ๋ ๋ช
ํํด์ง ๊ฒ์ด๋ฉฐ "๋ชจ๋ฆ" ๋ฒ์ฃผ์์ ์ผ๋ถ ์ง๋ฌธ์ ์ ๊ฑฐํ ์ ์์ ๊ฒ์
๋๋ค. ๋ค๋ฅธ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ Google์ด๋ YouTube์์ ์ง์ ๊ฒ์ํด์ผ ํฉ๋๋ค. ๊ฒ์ํ ์๊ฐ์ ์ข ์ฃผ์ธ์. ํผ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ ๋๋ฃ์๊ฒ ๋์์ ์์ฒญํ์ธ์.
์์ฐ์ฑ ๊ทน๋ํ๋ฅผ ์ํ 5๊ฐ์ง ์ต๊ณ ์ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ถ์ฒ:
Medium ์๋ง๋ Java๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ "๋ ๋์ ๋ฐฉ๋ฒ์ด ์์ ํ
๋ฐ..."๋ผ๊ณ ์๊ฐํ ์ ์ด ์์ ๊ฒ์
๋๋ค. Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ ์๊ฐ์๋ ์ต๊ณ ์ ๋์๊ด ๋ค์ฏ ๊ณณ์ ์๊ฐํ๊ฒ ์ต๋๋ค. ์ด ๋์๊ด์ ์ฌ์ฉํ๋ฉด ์์ฐ์ฑ๊ณผ ์์
ํจ์จ์ฑ์ด ๋์์ง ๊ฒ์
๋๋ค.
1. ๋กฌ๋ณต
Project Lombok ์ ์ฃผ์์ ์ฌ์ฉํ์ฌ ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ค์ด๋ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
@Getter์ ๊ฐ์ ์ฃผ์์ ์ฌ์ฉํ์ฌ getField() ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค . ์ง์๋๋ ์ฃผ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- getter ๋ฐ setter๋ฅผ ์์ฑํ๋ @Getter ๋ฐ @Setter
- @EqualsAndHashCode๋ Equals ๋ฐ HashCode ๊ณ์ฝ์ ์ค์ํ๋ Equals ๋ฐ HashCode ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค .
- @ToString์ ClassName(fieldName = value, fieldName2 = value...) ํ์์ ๋ฐ๋ฅด๋ toString() ๋ฉ์๋๋ฅผ ์์ฑํฉ๋๋ค .
- @Builder๋ POJO๋ฅผ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ๋น๋ ํจํด์ ์๋์ผ๋ก ๊ตฌํํฉ๋๋ค.
- @Data๋ @Getter, @Setter, @EqualsAndHashCode, @ToString ๋ฐ @RequiredArgsConstructor์ ์ฝ์ด์
๋๋ค!
๋ ๋ง์ ์ง์๋๊ณ ์ฝ๊ฒ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ์ฃผ์์ด ์์ต๋๋ค. ์ด๋ค๊ณผ ํจ๊ป ์์
ํ๋ฉด ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์๋ ๋ฉ๋๋ค.
2. ๊ตฌ์๋ฐ
Guava ๋ Google์์ ๋ง๋ค๊ณ ์ ์ง ๊ด๋ฆฌํ๋ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ์ฌ๊ธฐ์๋ ์ฝ๋ ์์
์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ง์ ์ ํธ๋ฆฌํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. Guava์ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Map์ด ํน์ ํค์ ๋ํด ์ฌ๋ฌ ๊ฐ์ ์ง์ํ๋ Multimap<k, v="">์ ๊ฐ์ ์ปฌ๋ ์
ํ์ฅ์ ๋ ๊น๋ํ API๋ฅผ ์ฌ์ฉํ๋ Map <k, collection="" <v="">>์ ๋์ผํฉ๋๋ค. ;</k, ></k,>
- ๊ทธ๋ํฝ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ๋งํ๊ธฐ ์ํ ๋ค์ํ ์ ํธ๋ฆฌํฐ๊ฐ ํฌํจ๋ Graphs ํจํค์ง;
- MoreExecutors, Atomics ๋ฐ ListenableFuture์ ๊ฐ์ ๋์์ฑ ์ ํธ๋ฆฌํฐ.
Guava ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ง์ ๋ด์ฉ์ด ์์ต๋๋ค. Google์ ์ง์ ๋๋ถ์ ๊ฝค ์ธ๊ธฐ๊ฐ ๋์ผ๋ฏ๋ก ํด๋น API๊ฐ ์ฒ ์ ํ๊ฒ ํ
์คํธ๋๊ณ ์ง์๋๋ฏ๋ก ์์ฌํ์
๋ ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ Java ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค๋ฉด ๋ฐ๋์ Guava์์ ํด๊ฒฐ์ฑ
์ ์ฐพ์ ์ ์์ ๊ฒ์
๋๋ค!
3. ์ต๋ ์ ์ ๋ชจ๋
Hibernate ๋ SQL ํ
์ด๋ธ๊ณผ POJO ๊ฐ์ ๋ณํ์ ๋ํด ๊ฑฑ์ ํ ํ์ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ์ฒด ๊ด๊ณํ ๋งคํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. Hibernate ์น์ฌ์ดํธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค:
โHibernate๋ฅผ ์ฌ์ฉํ๋ฉด ์์, ๋คํ์ฑ, ์ฐ๊ด, ๊ตฌ์ฑ ๋ฐ Java ์ปฌ๋ ์
์ ํฌํจํ ์์ฐ์ค๋ฌ์ด ๊ฐ์ฒด ์งํฅ ์์น์ ๋ฐ๋ผ ์๋ช
์ด ๊ธด ํด๋์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. Hibernate๋ ์๋ช
์ด ๊ธด ํด๋์ค์ ๋ํ ์ธํฐํ์ด์ค๋ ๊ธฐ๋ณธ ํด๋์ค๋ฅผ ํ์๋ก ํ์ง ์์ผ๋ฉฐ ๋ชจ๋ ํด๋์ค๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ง์๋๋๋ก ํ์ฉํฉ๋๋ค.โ ์๊ตฌ ๋ฐ์ดํฐ ์ ์ฅ์ ๊ฐ์ ํ๊ณ ์์ฒ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด Hibernate๋ฅผ ์ฌ์ฉํ์ญ์์ค.
4. ๊ฐ์ง
OpenFeign ์ Java์์ RESTful HTTP ํด๋ผ์ด์ธํธ๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ Netflix์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. Feign ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ๋ ค๋ฉด ์์ฒญ ๋ฐ ์๋ต ์ธ๋ถ์ ๋ณด๋ก ์ธํฐํ์ด์ค๋ฅผ ์ค๋ช
ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๋ค์ ์๋ฅผ ํตํด ๊ฐ์ฅ ์ ์ค๋ช
๋ฉ๋๋ค.
@FeignClient(url = "https://github.com")
interface GitHubClient {
@RequestLine("GET /users/{username}/repos?sort=full_name")
List<repository> repos(@Param("username") String owner);
@RequestLine("GET /repos/{owner}/{repo}/contributors")
List<contributor> contributors(@Param("owner") String owner, @Param("repo") String repo);
@RequestLine("POST /repos/{owner}/{repo}/issues")
void createIssue(Issue issue, @Param("owner") String owner, @Param("repo") String repo);
}
</contributor></repository>
์์ ์ธ๊ธ๋ GitHubClient ์ธํฐํ์ด์ค๋ ๋ฉ์๋์ ์ค๋ช
๋ GET ๋ฐ POST ์์ฒญ์ ์ํํฉ๋๋ค. ์ด ํด๋ผ์ด์ธํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์์ฒญ์ โโ๋ํด JSON ํ์์ ์ฌ์ฉํฉ๋๋ค. Feign ํด๋ผ์ด์ธํธ์๋ ๋ค์ํ ์ค์ ์ด ์์ต๋๋ค:
- POJO๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ์ง๋ ฌํ ๋ฐ ์ญ์ง๋ ฌํ๋๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ ์ธ์ฝ๋ ๋ฐ ๋์ฝ๋;
- ์ฌ์๋ ๊ท์น ๋ฐ ๋
ผ๋ฆฌ๋ฅผ ์ง์ ํ๋ ์ฌ์๋์
- ์ฟ ํค ์์ ๋๋ ์น์ธ๊ณผ ๊ฐ์ ๊ธฐํ ์ฌ์ ์์ฒญ ์์
์ ์ํ RequestInterceptor์
๋๋ค.
Feign์ ์ฌ์ฉํ๋ฉด HTTP ํด๋ผ์ด์ธํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ ํ์๊ฐ ์์ต๋๋ค! ์ฐธ๊ณ : Spring์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Spring๊ณผ์ ํตํฉ์ด OpenFeign ์์ฒด๋ณด๋ค ๋ ๋์
Spring Cloud OpenFeign์ ์ฌ์ฉํด์ผ ํฉ๋๋ค .
5. ์คํ๋ง ๋ถํธ
๋ง์ง๋ง์ผ๋ก ์ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
Spring Boot ์
๋๋ค . Spring Boot๋ ํ๋ก๋์
์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ Java ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํฉ๋๋ค. ์ด๋ ๋ค์์ ํ์ฉํฉ๋๋ค:
- ๋
๋ฆฝํ Spring ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํฉ๋๋ค.
- Tomcat, Jetty ๋๋ Undertow๋ฅผ ์ง์ ํฌํจํฉ๋๋ค(WAR ํ์ผ์ ๋ฐฐํฌํ ํ์ ์์).
- ๋น๋ ๊ตฌ์ฑ์ ๋จ์ํํ๊ธฐ ์ํด "์คํํฐ" ์ข
์์ฑ์ ์ ๊ณตํฉ๋๋ค.
- Spring ๋ฐ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค.
- ๋ฉํธ๋ฆญ, ์ํ ํ์ธ, ์ธ๋ถ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Spring Boot๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ ์๋นํ ํ์ต ๊ณก์ ์ด ์์ง๋ง ๊ทธ๋งํ ๊ฐ์น๊ฐ ์๋ค๊ณ ํ์ ํฉ๋๋ค. Spring Boot๋ ๋ชจ๋ ํ๋ก์ ํธ์ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถํ์ผ๋ฉฐ ์์ ์ฑ, ํ์ฅ์ฑ ๋ฐ ๊ฐ๋
์ฑ์ผ๋ก ์ธํด ๊ณ์ํด์ ์ด์ ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
๊ฒฐ๋ก
๋ง์ ์ฌ๋๋ค์ด Java๋ฅผ ์ต์ ์ธ์ด์ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๊ฐ ๋ถ์กฑํ "์ค๋๋" ์ธ์ด๋ก ๊ฐ์ฃผํ๋ค๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ Java๋ ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ท๋ชจ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ํํ๋ก ๊ณ ์ ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ์์
์์ ๋ฌธ์ ๊ฐ ํจ์ฌ ์ค์ด๋ค ๊ฒ์
๋๋ค. Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช
ํ์ง ๋ง๊ณ ํต์ฌ ์ญ๋์ ์ง์คํ์ธ์!
GO TO FULL VERSION