Spring Boot ์ฌ์ฉ์ ์ฅ์ ๊ณผ ๋จ์
์ถ์ฒ:
Dev.to Spring Boot๋ Pivotal Software์์ ๊ฐ๋ฐํ ์คํ ์์ค Java ๊ธฐ๋ฐ ํ๋ ์์ํฌ์
๋๋ค. ์๋์ ์ฌ์ฉ ํธ์์ฑ์ผ๋ก ์ธํด WAR(์น ์ ํ๋ฆฌ์ผ์ด์
์์นด์ด๋ธ) ๋ฐฐํฌ ๋ฐ ๋
๋ฆฝํ Java ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์๋ฃจ์
์ด ๋์์ต๋๋ค.
Spring Boot๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์๊ฒ ์ ์ฐํ ์ฌ์ฉ์ ์ ์, ๊ฐ๋ ฅํ ์ผ๊ด ์ฒ๋ฆฌ, ํจ์จ์ ์ธ ์์
ํ๋ฆ ๋ฐ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ Spring ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐ ๋์์ด ๋๋ ํ๋ถํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ค๋ ์ ์์ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ณด๋ค ๋๋ณด์
๋๋ค.
์คํ๋ง ๋ถํธ ์๊ฐ
Spring Boot์ ๊ดํด ๊ฐ์ฅ ๋จผ์ ์ธ๊ธํ ์ ์ Spring Boot์ Spring Framework๋ ์๋ก ๋ค๋ฅธ ๊ธฐ์ ์ด๋ผ๋ ์ ์
๋๋ค. Spring์ Spring MVC, Spring JDBC, Spring Security ๋ฑ๊ณผ ๊ฐ์ ์๋ง์ ๊ธฐ์ฑ ๋ชจ๋์ ํฌํจํ๋ Java ๊ฐ๋ฐ์ ์ํ ์ ์ฒด ์ํ๊ณ์
๋๋ค. ๋ฐ๋ฉด์ Spring Boot๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ Spring์ ํ์ฅ์
๋๋ค. ๋ค์ํ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ด์งํ๊ณ ์๋๋ฅผ ๋์ฌ ์์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์๋ ๊ตฌ์ฑ
์๋ ๊ตฌ์ฑ์ ๊ฐ๋ฐ์๊ฐ ์ํํด์ผ ํ๋ ๋จ๊ณ ์๋ฅผ ์ค์ด๋ Spring Boot์์ ์์
ํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด์ ์ ์ถ๊ฐ๋ ์ข
์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก Spring ์ ํ๋ฆฌ์ผ์ด์
์ ์๋์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค. Spring Boot ์๋ ๊ตฌ์ฑ์ ๋ฐ์ด๋ ์ ์ฐ์ฑ์ ์ ์งํ๋ฉด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ง ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ข
์์ฑ ์ฃผ์ฅ
์๊ฒฌ์ด ์๋ค๋ ๊ฒ์ Spring Boot ์์ฒด๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฌ์ ์ํ ์ ์๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ Bean ์ธํธ๋ฅผ ์ ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ฒ๋ค๊ฐ ์ด ํ๋ ์์ํฌ๋ ํ์ํ ์ข
์์ฑ์ ๋ฐ๋ผ ์ค์นํ ํจํค์ง๋ฅผ ์ ํํฉ๋๋ค. ๋ฐ๋ผ์ Spring Boot ๊ฐ๋ฐ์๋ ๋๋ถ๋ถ์ ์์
์ด ํ๋ ์์ํฌ ์์ฒด์์ ์ํ๋๋ฏ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ๋ ๋ง์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์ถ์ ์ฆ์ ์์ํฉ๋๋ค.
์๋ฒ ๋๋ ์๋ฒ
์๋ฒ ๋๋ ์๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ผ๋ถ์
๋๋ค. ์ฆ, ๋ฐฐํฌ ํ๊ฒฝ์ ์ฌ์ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. Spring Boot๋ ๊ธฐ๋ณธ์ ์ผ๋ก Tomcat ์๋ฒ๊ฐ ๋ด์ฅ๋์ด ์์ง๋ง Jetty ๋๋ Undertow๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ด์ฅํ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณด๋ค ํจ์จ์ ์ธ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ฌ์์ ์๊ฐ์ด ๋จ์ถ๋ฉ๋๋ค.
์คํ๋ผ์ธ์ผ๋ก ์์
Spring Boot๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ์น ์๋ฒ์ ๋ฐฐํฌํ์ง ์๊ณ ๋ ํ๋ก๋์
์์ค์ ๋
๋ฆฝํ Spring ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๊ณ ์คํํ ์ ์์ต๋๋ค. ์ผ๋ฐ Java ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ค๋ฉด ์น ์๋ฒ๋ก ํจํค์ง, ์ ํ, ๋ก๋ ๋ฐ ๊ตฌ์ฑํ๊ณ ๋ฐฐํฌํด์ผ ํฉ๋๋ค. Spring Boot๋ก ๊ตฌ์ถ๋ Java ์ ํ๋ฆฌ์ผ์ด์
์ ํจํค์ง๋ง ํ๋ฉด ๊ฐ๋จํ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์คํํ ์ค๋น๊ฐ ๋ฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ ๋ฌด์์ด๋ฉฐ ์ ๋ง๋๋๊ฐ?
Spring Boot ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ๊ฐ๋ณ๊ณ ์ฆ์ ์คํ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค๋ ๊ฐ๋ฐ์๊ฐ ๋
๋ฆฝ์ ์ด๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋ถ๋ถ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ ๊ณตํ ์ ์๋ ์ํํธ์จ์ด ์ํคํ
์ฒ ๊ธฐ์ ์
๋๋ค. ๋ํ ๋ง์ดํฌ๋ก์๋น์ค๋ ๊ฐ๋ฐ์์๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ถ๊ฐ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ๋ ์ฝ๊ณ ๋น ๋ฅธ ๋ฐฐํฌ;
- ๋ ์ฌ์ด ์ ์ง ๊ด๋ฆฌ;
- ํจ์จ์ฑ ์ฆ๊ฐ;
- ๋ ๋์ ๋ด๊ฒฐํจ์ฑ;
- ํ์ฅ์ฑ์ด ํฅ์๋์์ต๋๋ค.
๋ด์ ๋ฐฐ์์ผ ํ ๊น?
Spring์ ํ์ต ๊ณก์ ์ด ์๋นํ ๊ธด ๋ณต์กํ ํ๋ ์์ํฌ์ธ ๋ฐ๋ฉด, Spring Boot๋ Spring ์ํ๊ณ์ ๋ฐ์ด๋๋ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์
๋๋ค. ๋ ๋ฐ์ด๋ ์๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํจ์ผ๋ก์จ Spring Boot๋ ๊ฐ๋ฐ์๊ฐ ์ง๋ฃจํ ์๋ ๊ตฌ์ฑ์ ํผํ๊ณ ํ์ต ๊ณก์ ์ ์ค์ด๋ฉฐ ์ฑ๊ณต์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ฌ์ฑํ ์ ์๋๋ก ๋์์ค๋๋ค. Spring Boot์์๋ Spring์ ๋ฐฐ์ธ ํ์๊ฐ ์์ง๋ง ๊ฐ๋ฐ ๊ธฐ์ ์ ํฅ์์ํค๊ธฐ ์ํด Spring Essentials๋ก ๋์๊ฐ ์ข
์์ฑ ์ฃผ์
, ๊ตฌ์ฑ ์ํ ๋ฐฉ๋ฒ ๋ฑ๊ณผ ๊ฐ์ Spring Boot์ ๋ด๋ถ ์ธ๋ถ ์ฌํญ ์ค ์ผ๋ถ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค. ์.
์คํ๋ง ๋ถํธ์ ์ด์
Spring Boot๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์๋๋ฅผ ๋์ผ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์๊ฐ์ด ๋ง์ด ์์๋๋ ์ด๊ธฐ ์ค์น ๋ฐ ๋ฐฐํฌ ํ๊ฒฝ ์ค์ ์ด ํ์ํ์ง ์์ต๋๋ค. Spring Boot์ ์ฃผ์ ์ฅ์ :
- Spring์ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
- ํ๋ก๋์
๊ธ Spring ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ์๋ ๊ตฌ์ฑํฉ๋๋ค.
- ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
๋ฐฐํฌ๋ฅผ ์ํ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฒ ๋๋ ์๋ฒ(Tomcat, Jetty ๋ฐ Undertow).
- ์ธก์ ํญ๋ชฉ, ์ํ ๋ฑ ๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์
๊ธฐ๋ฅ์ ์
๋ ฅํ ์ ์๋ HTTP ์๋ํฌ์ธํธ์
๋๋ค.
- XML ๊ตฌ์ฑ์ด ์์ต๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ์๋ฒ ๋๋ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ๋ ์ฝ๊ฒ ํ ์ ์๋๋ก ํด์ฃผ๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์
๋๋ค.
- MySQL, Oracle, MongoDB, Redis, ActiveMQ ๋ฑ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ๋๊ธฐ์ด ์๋น์ค์ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- Spring ์ํ๊ณ์์ ์ํํ ํตํฉ.
- ๋๊ท๋ชจ ์ปค๋ฎค๋ํฐ์ ๋ค์ํ ๊ต์ก ํ๋ก๊ทธ๋จ์ ํตํด ์
๋ฌธ ๊ธฐ๊ฐ์ ๋์ฑ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์คํ๋ง ๋ถํธ์ ๋จ์
- ํต์ ๋ ฅ ๋ถ์กฑ. Spring Boot๋ ์ฌ์ฉ๋์ง ์๋ ์ข
์์ฑ์ ๋ง์ด ์์ฑํ๋ฏ๋ก ๋ฐฐํฌ ํ์ผ์ด ์ปค์ง๋๋ค.
- ๋ ๊ฑฐ์ ๋๋ ๊ธฐ์กด Spring ํ๋ก์ ํธ๋ฅผ Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๋ณํํ๋ ๋ณต์กํ๊ณ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ํ๋ก์ธ์ค์
๋๋ค.
- ๋๊ท๋ชจ ํ๋ก์ ํธ์๋ ์ ํฉํ์ง ์์ต๋๋ค. ๋ง์ ๊ฐ๋ฐ์์ ๋ฐ๋ฅด๋ฉด ๋ง์ดํฌ๋ก์๋น์ค๋ก ์์
ํ ๋ ๋ฌธ์ ๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ Spring Boot๋ ๋ชจ๋๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋๋ ๋ฐ ์ ํฉํ์ง ์์ต๋๋ค.
์์ฝํ์๋ฉด
Spring Boot๋ Java ์ํ๊ณ์ ํ์์ ์ธ ๋ถ๋ถ์ด ๋์์ผ๋ฉฐ, ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ก Spring ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๊ธฐ ์ํ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋๊ตฌ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋จ์ ๋ฐ ํตํฉ ํ
์คํธ์ ๋ํ ๊ธฐ๋ณธ ์ค์ ์ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๋ํ Spring Boot๋ ๊ฐ๋ฐ์๊ฐ Spring์ ๋ํด ์์ธํ ์์๋ณด๋ ๋ฐ ๋ง์ ์๊ฐ๊ณผ ๋
ธ๋ ฅ์ ๋ค์ด์ง ์๊ณ ๋ ๋ช
ํํ๊ณ ์์ ํ ๊ตฌ์ฑ์ผ๋ก ๊ฐ๋ ฅํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค๋๋ค. ์ด ์๋ฃจ์
์ด Java ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ๊ฒฐ์ ํ๋ ค๋ฉด Spring Boot์ ์ฅ์ ๊ณผ ๋จ์ , ํต์ฌ ๊ธฐ๋ฅ์ ์ดํดํ๊ณ ๋น์ฆ๋์ค ๋ชฉํ์ ๋ง๊ฒ ์กฐ์ ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์์ฌ์ ์์ ๊ณ ํ์ฌ์ ๊ฐ์ฅ ์ ํฉํ ์๋ฃจ์
์ ์ ํํ ์ ์์ต๋๋ค.
Java์ ๋ฌธ์์ด ํจ์
์ถ์ฒ:
DZone ์ด ๊ฒ์๋ฌผ์์๋ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ฉฐ ๋ฏธ์ ์ผ๋ก ๋ณด๊ธฐ ์ข์ ํ๋ก๊ทธ๋๋ฐ์ ์ํด Java์ ๋ด์ฅ ๋ฌธ์์ด ํจ์๋ฅผ ๋ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค.
๋ฌธ์์ด์ด๋ ๋ฌด์์
๋๊น?
๋จผ์ ๋ฌธ์์ด์ด ๋ฌด์์ธ์ง ์ดํดํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฌธ์์ด์ ๋ฌธ์ ์งํฉ์ด ์๋ ํ ์ค๋ก ๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ.
- ํ
์คํธ๊ฐ ๊ธธ๊ณ ๋ฌธ์๋ณด๋ค๋ ๋จ์ด๋ก ์์
ํด์ผ ํ๋ ๊ฒฝ์ฐ.
- ์ ๋ณด๊ฐ ๋ง์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์ต๋ํ ๋นจ๋ฆฌ ํด๊ฒฐํ๋ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
์ ์ ๋ชจ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
String line;
์ ์ ๊ธธ์ด๋ ๋ค๋ฅผ ์ ์์ต๋๋ค.
String line = new String[any length];
์ฝ์์์ ๋ผ์ธ ์ป๊ธฐ:
Scanner in = new Scanner(System.in);
String line = in.nextLine();
์์น ์ป๊ธฐ
๋ฌธ์์ ์์น๊ฐ ํ์ํ ๊ฒฝ์ฐ
indexOf(...) ๋ฅผ ์ฌ์ฉํ์ธ์ . ๊ดํธ ์์ ์ฐ์ฌ์ง ๋ฌธ์(๋ฐ๋ณต๋๋ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ)์ ์ซ์ ๊ฐ(์์น)์ ๋ฐํํฉ๋๋ค.
int pos = line.indexOf('any symbol');
' ' ๋ ๋ฌธ์์ฉ์ด๊ณ
" " ๋ ๋ฌธ์์ด(๋ฌธ์ ์งํฉ)์ฉ์ด๋ผ๋ ์ ์ ๊ธฐ์ตํ์ธ์ .
์๋ฅด๋ค
์์น๋ฅผ ํ๋ณดํ ํ์๋ ๋ผ์ธ์ ์ญ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด
line="Hello-World" ๊ฐ ์๊ณ line="Hello World" ๋ฅผ ์ป์ผ๋ ค๋ ๊ฒฝ์ฐ "-"๋ฅผ ๋จ์ถํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ
substring(...) ์ฌ๊ธฐ ๊ดํธ ์์ (์์ ์์น, ๋ ์์น);. ์ด๋ ๊ฒ ํ๋ฉด ์์น 0์์ '-' ์์น๋ก ๋จ์ถ๋ฉ๋๋ค. ์ฌ๊ธฐ ์์น 5์
๋๋ค. ๋ฐ๋ผ์
newline = line.substring(0,5); ๊ทธ๋ฐ ๋ค์ ์ ์ "๊ผฌ๋ฆฌ"("World")๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๊ฐํ += line.substring(6, line.length()); length() ๊ธธ์ด๋ ๋ฌธ์์ด์ ๋ฌธ์ ์๋ฅผ ์ ์ดํฉ๋๋ค. ๋ฐ๋ผ์ ํ์ ๋ฌธ์์ด์ ๋ ์์น๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
Equals(...) ๋ ๋ฌธ์์ด์ ๋น๊ตํ๋ ค๋ฉด
equals(...) ๋ฅผ ์ฌ์ฉํฉ๋๋ค . ๋ถ์ธ ๋ณ์๋ฅผ ๋ฐํํ๋ฏ๋ก ๊ฒฐ๊ณผ๋ true ๋๋ false์ผ ์ ์์ต๋๋ค.
์ฃผ๋ก if ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค .
if (line.isEmpty()) {
System.out.println("Your line is empty");
}
match() ์ ์ฒด ๋ฌธ์์ด์ด ์๋ ์ผ๋ถ ๋ถ๋ถ(ํจํด ์ฌ์ฉ)์ ๋น๊ตํ๋ ค๋ฉด
match() ๋ฅผ ์ฌ์ฉํ์ธ์ . ํจํด์ ์ ๊ท์์
๋๋ค.
match()๋ ๋ถ์ธ ๋ณ์๋ฅผ ๋ฐํํ๋ฏ๋ก ์ฃผ๋ก if ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค .
if (line.matches ("\\d{3}") {
System.out.println("Your line contains 3 numbers");
}
GO TO FULL VERSION