ํจ์คํธ์บ ํผ์ค ์์ฌ 30์ผ ์ฑ๋ฆฐ์ง ์ต์ข ํ๊ธฐ !!
๐ Spring์ ๋~~~๊ฒ ๊ฒฝํํ๋ฉฐ ์ ๋ฌธํ ์ ์๋ ์ข์ ๊ฐ์
Java, Spring, Springboot, Spring Data JPA, Spring Security, Spring Batch, Spring Cloud .....
Spring Cloud ์ชฝ์ ์์ง ๋ค ์ ๋๋ก ๋ฃ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋จธ์ง ๋ถ๋ถ์ ๋ํ ์ง์ํ ํ๊ธฐ๋ฅผ ์ ์ด๋ณธ๋ค.
๐ JAVA
๋๋ C, C++, Java, Python ๋ฑ๋ฑ ๋ํ์ ์ผ๋ก ์ ๋ฌธํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ฐฐ์ธ ๋ ์ฑ ์ ์ฌ์ฉํ๋ค. Java, C++ ๋ชจ๋ ์ค์ฑ์ฐ ๋์ ์ดํ ํ๋ก๊ทธ๋๋ฐ์ ํตํด ์ ๋ฌธํ๋๋ฐ ์ฑ ์ ํตํด ๋ฐฐ์ฐ๋ ๊ฒ๋ ๋ถ๋ช ํ ์ฅ์ ์ด ์๊ฒ ์ง๋ง ์ด๋ฒ์ ์ ๋ฌธ๊ฐ์๋ฅผ ๋ค์ ๋ค์ด๋ณด๋ ์ธ๊ฐ์ด ํจ์ฌ ์ข์ง ์์๊น ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ์ ๋ง ๊ธฐ์ด์ ์ธ ๋ถ๋ถ๋ถํฐ ์๋ฐ8๋ถํฐ ์ ์ฉ๋ ๊ธฐ์ ๊น์ง ์๋ก ๋ฐฐ์ฐ๊ธฐ๋ ๋ณต์ตํ๊ธฐ๋ ํ ์ข์ ๊ฐ์์๋ค. Spring ๊ณต๋ถ๋ฅผ ํ๋ค๊ฐ ์ด์ง ์ง์น ๋ ํ๋ฒ์ฉ ๋ค์ด์ฃผ๋ฉด ์ด์ง ํ๊ธฐ๊ฐ ๋๋? ๋๋์ด์๋ค.
Java ๊ฐ์ ๋ํ ์๊ฐ์ ํ์ง ์์์ง๋ง ์นดํ ๊ณ ๋ฆฌ๋ง ๋ด๋ Java์ ๋ํด ๊ฑฐ์ ๋ชจ๋ ๋ถ๋ถ์ ๋ค๋ฃจ๋ ๊ฒ์ ์ ์ ์๋ค.
๋๋ Java๋ฅผ ์ ์๋๊ฐ..?
๋๋ Spring์ ์ฐ๋ฉด์ Java๋ฅผ ์ ๋๋ก ๋ค๋ฃจ๊ณ ์๋๊ฐ? ๋ผ๋ ์๊ฐ์ด ๋ค ๋๊ฐ ์๋๋ฐ ๋ํ์ ์ผ๋ก ์๋ฐ 8 ๋ฌธ๋ฒ์ ์ธ ๋์ด๋ค. ๊ทธ์ธ์ ๊ฒ๋ ๋ง์ง๋ง.. Part2์ CH6 ์๋ฐ์ ๋ค์ํ ๊ธฐ๋ฅ๋ค ๋ถ๋ถ์์ Lambda, Stream, Function, ์ ์ถ๋ ฅ, Logger, Serialization, Multi-Thread ๋ฑ์ ๋ฐฐ์ฐ๊ฒ ๋๋๋ฐ ๋์ Java ์ค๋ ฅ์ ๋ค์ ํ๋ฒ ํ์ธํ๊ณ ๋ถ์กฑํ๋ค๋ฉด ์ฑ์ธ ์ ์๋ ๋ถ๋ถ์ด๋ค.
์ถ๊ฐ๋ก Spring์ ์ ๋๋ก ์ดํดํ๋ ค ํ ๋ ํญํญ ํ์ด๋์ค๋ ๋์์ธ ํจํด์ ์์ด์๋ ์ค์ต๊ณผ ํจ๊ป ๋ค๋ฃฌ๋ค.
์ด ๊ฐ์๋ฅผ ์๊ฐํ๋ค๋ฉด JAVA ๊ธฐ๋ณธ์๋ฅผ ํ ๊ถ์ ํต์ผ๋ก ์ฝ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์ ๊ฒ์ด๋ค.
๐ Spring
๋์์ธ ํจํด
Spring ๊ณต๋ถ๋ฅผ ํ ๋ ๊ท์ฐฎ๊ณ ์ดํดํ๊ณ ์ธ์ฐ๊ธฐ ํ๋ค์ด์ ์ฝ๊ฒ ๊ธฐํผํ๋ ๋์์ธํจํด์ ๋ํด์ ๋ค๋ฃฌ๋ค. ๋ด ์งง์ ๊ฒฝํ์ผ๋ก Spring์ด ๋ง๋ค์ด์ง ๊ตฌ์กฐ๋ฅผ ์ด๋์ ๋ ์ดํดํ๋ ค๋ฉด ๋์์ธ ํจํด์ ์์ฃผ ์ ์์์ผ ํ๋ค. ์ฑ๊ธํค ํจํด, ์ด๋ํฐ ํจํด, ํ๋ก์ ํจํด ๋ฑ Spring ์ฑ ๋๋ ๋ค๋ฅธ ๊ฐ์์์ ํ๋ฒ์ฉ ๋ค์ด๋ณธ ํจํด์ ์ซ ๋ค๋ฃฌ๋ค.
REST API
๊ฐ์๋ Rest API ์ค๊ณ๋ก ์์๋๋ค. REST API์ ๊ธฐ๋ณธ์ด์ ๋ชจ๋ ๊ฒ์ธ GET, POST, PUT, DELETE ์ค๊ณ ๋ฐฉ๋ฒ์ ๋ํด ํ๋ํ๋ ๊น๊ฒ ๋ฐฐ์ฐ๊ณ ๊ฐ์ฒด ๋งคํ๋ฐฉ๋ฒ, Json ๋ฆฌํด ๋ฐฉ๋ฒ ๋ฑ REST API ์ค๊ณ ์ ๋ฐ์ ์ ๋ค๋ฃจ๊ณ ์๋ค.
Ioc, DI, AOP
๋ค์์ Spring์ ์ฒ ํ? ์ฏค ๋๋ IoC, DI, AOP ์ ๋ํด ๋ฐฐ์ด๋ค. Java ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ๋ค๋ฉด ์ด๋ก ์ ์ผ๋ก๋ ๋ฐ๋์ ์์์ผ ํ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ด๋ก ์ ์ธ ์ค๋ช ๊ณผ ๋๋ถ์ด AOP ๋ถ๋ถ์์ ๋ก๊น , ๋ฉ์๋ ์คํ์๊ฐ ์ธก์ ๋ฑ ์ค์ต์์ ๋ฅผ ์ ์ฉํ ๊ฒ์ด ์ฐธ ๊ด์ฐฎ์๋ค.
ํ ์คํธ
Spring ์ ๋ฌธ์๊ฐ ์ ๊ฒฝ์ฐ๊ธฐ ํ๋ Test ๋ถ๋ถ๋ ๋ค๋ฃฌ๋ค. Junit์ ์ฌ์ฉํ ํ ์คํธ๋ฅผ ์งํํ๋๋ฐ ์์ ์ค๊ณํ API์ ๋ํด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ ์ข ๋ ์ง์ง๊ฐ์? ํ ์คํธ ์ฝ๋๋ฅผ ์ง๊ฒ ๋๋ค. ๋ง์ง๋ง์ผ๋ก Jacoco๋ฅผ ์ด์ฉํ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ํ์ธ๊น์ง ๋ถธ๋ฆฌ ๊ตฟ์ด์๋ค.
Swagger
REST API๋ฅผ ๋ฌธ์ํํ ์ ์๋ Swagger๋ ๋ฐฐ์ด๋ค. ์ฌ๊ธฐ๊น์ง ๋ฐฐ์ฐ๊ณ ๋ค ์ดํดํ๋ค๋ฉด ์ ๋ง REST API๋ฅผ ์ธ์ค ์๋ ์ฌ๋์ด ๋๋ค๊ณ ์๊ฐํ๋ค. REST API ์ค๊ณ๋ถํฐ ๋ฌธ์ํ๊น์ง ์ญ~ ๋ค๋ฃฐ ์ ์๋ค๋ ๊ฒ์ด ํฐ ์ฅ์ ์ด๋ค.
๋ง์ง ๋ฆฌ์คํธ ํ๋ก์ ํธ
๋ง์ง๋ง์ผ๋ก ๋ฐฐ์ด ๊ฒ์ ๋ชจ๋ ์ ์ฉํด๋ณผ ์ ์๋ ์ธ๋ถ API ๊ธฐ๋ฐ ํ ์ด ํ๋ก์ ํธ๊ฐ ๊ฐ์์ ๋ง์ง๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๊ฒ์ด ์ข๋ค.
๐ Spring Data JPA
์ฌํํ ๊ฐ์ ์คํ์ผ
JPA ๋ถ๋ถ์์ ๊ฐ์ฅ ์ข์๋ ๊ฒ์ UI ์์ด ์งํ๋๋ค๋ ๊ฒ์ด๋ค. ๋ง์ JPA ๊ฐ์์์ JPA๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด ๊ฐ๋จํ UI๋ผ๋ ๊ตฌ์ฑํ๊ณ ์์ํ๋๋ฐ ์ด ๊ฐ์๋ TDD ๊ธฐ๋ฐ์ผ๋ก๋ง ์ค์ต์ ์งํํ๋ค. ์ ๋ง Spring์ ์ ๋ฌธํ๋ ์ฌ๋์ด๋ผ๋ฉด Test๋ฅผ ๋ค๋ค๋ณด๋ ๊ฒ๋ ์ข์ ๊ธฐํ๋ผ๊ณ ์๊ฐ๋๋ค.
๋ฐฉ๋ํ ์์ JPA๋ฅผ ๊ฑฐ์ ๋ค ๋ค๋ฃฌ๋ค. ์ ๋ง ๊ธฐ๋ณธ์ ์ธ SQL๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ง์์ด ์๋ค๋ฉด ์๊ฐํ๋๋ฐ ์ ํ ๋ฌด๋ฆฌ๊ฐ ์์ ๊ฒ์ด๋ผ ์๊ฐ๋๋ค.
ใ ใ
์กฐ๊ธ ์์ฌ์ ๋ ์ ์ ์์ ๋งํ๋ ์ฅ์ ์ด๋ค. ๊ฑฐ์ ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์๊ฐ ์งํ๋๊ธฐ ๋๋ฌธ์ ๋น์ฅ์ ๊ฒฐ๊ณผ๋ฌผ์ด ๋จ์ง ์๋๋ค. ์กฐ๊ธ ์์ฌ์ด ๋ถ๋ถ์ด์ด๋ค.
Repository
JPA์์ ํฌ~์ ๋ถ๋ถ์ ์ฐจ์งํ๋ Repository ์ธํฐํ์ด์ค์ ๋ํด JPA๋ฅผ ์ฒ์ ๊ฒฝํํด๋ณธ ์ฌ๋๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์ค๋ช ํ๋ค. ์ฒ์๋ถํฐ ๊ทธ๋ฅ ์ด๊ฑฐ ์ฐ์ธ์ ~ ์ด๋ ๊ฒ ์ ๊ทผํ๋ฉด ๊ฐ๋จํ๊ธฐ์ผ ํ๊ฒ ์ง๋ง ๋ ๋ด๋ถ์ ์ผ๋ก ๋ค์ด๊ฐ์ ์ดํด๋ฅผ ํ๋ค๋ฉด ๋์ค์ ์ ํ์ ํญ์ด ๋ ๋์ด์ง ๊ฒ์ด๋ค.
Query, Entity
๋ค์์ผ๋ก ์ ๋๋ก Entity๋ฅผ ์ค๊ณํ๊ณ ์ฌ~~๋ฌ Query๋ฅผ ์ฌ~~๋ฌ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉฐ ํ ์คํธ๋ฅผ ์งํํ๋ค. ์ญ์๋ UI์ ์๊ฐ๋ญ๋นํ์ง ์๊ณ ํต์ฌ๋ง ๋ฝ๋ ๊ฐ์๋ฐฉ์์ด ์ฐธ ์ข์๋ค.
EntityListener
๊ฐ์ฅ ํฅ๋ฏธ๋กญ๊ฒ ๋ค์๋ ์น์ ์ด๋ค. ๋ค๋ฅธ ๋งค์ฒด๋ฅผ ํตํด์ EntityListener๋ฅผ ๊ฒฝํํด๋ณธ ์ ์ด ์๊ธด ํ์ง๋ง ์ด๋ฒ์๋ ํนํ ๊น๊ฒ ๋ค๋ค๋ ๊ฒ ๊ฐ๋ค.
EntityListener๋ฅผ ๋ฐฐ์ ์ ๋๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ์ ๋ auditingentitylistener ์ ๋๋ง ์ฌ์ฉํด๋ดค๋๋ฐ ์ด๋ฒ์ ์ง์ ๋ฆฌ์ค๋๋ฅผ ๊ตฌํํด์ ์ฌ์ฉํด๋ณด๋ ํ์ฅํ ์ ์๋ ํฌ์ธํธ๋ฅผ ์ ์ ์๊ฒ ๋์๋ค.
๊ธฐ์ตํ์ !! @PrePersist, @PreUpdate, @PostPersist, @PostUpdate, @PostLoad !!
๋ฑ๋ก์ @EntityListeners(value = MyEntityListener.class) ...
ํธ๋ฌ๋ธ์ํ
JPA๋ฅผ ๋ฐฐ์ฐ๋ฉด ๋ฌด์กฐ๊ฑด ๋์ค๋ ๊ทธ ๋จ์ด N+1
์ด๋ค ๋ ๊ฐ์ฒด๊ฐ 1:N์ ๊ด๊ณ๋ฅผ ๊ฐ์ก์ ๋ 1 ์ชฝ์ ์กฐํํ์ ๋ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ N๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ํ๋์ฉ ์กฐํํ๋ค๋ฉด ?? ์ฃ..
fetch join, @EntityGraph๋ก ํด๊ฒฐ !! (fetch join์ด ์น์ํ๊ณ ์ฌ์ด ๋๋?)
๐ Spring Security
So ์ด๋ ต .. But ๊ตฟ
์.. ์ผ๋จ ์ด๋ ต๋ค. Security ์์ฒด๊ฐ Spring์์ ์ด๋ ค์ด ๋ถ๋ถ์ผ๋ก ๊ผฝํ๊ธฐ๋ ํ๊ณ ๊ฐ์ฌ๋๋ ๊ฝค๋ ๋์ด๋ ์๋ ์์ ๋ฐฉ์์ ๊ฐ์ง์ จ๋ค.
์ด๋ฐ์ ๊ฐ์๋ฅผ ์ํ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ๋ถํฐ ๋์ ๊ฐ์ ์ด๋ฐ์๋ผ๋ฉด ๋ฉ๋ถ์ ๋น ์ง ๊ฒ์ด๋ค... ์ด ๋ถ๋ถ๋งํผ์ Spring์ ๋ํด ์กฐ๊ธ ์๋ฌ๋ ์ฌ๋์๊ฒ ์ถ์ฒํ๋ค. ์ ๋ง ๊น์ ๋ถ๋ถ๊น์ง ๋ค์ด๊ฐ๋ฉด์ Spring Security๋ฅผ ํ๊ณ ๋ ๋ค. Security์ ํํฐ์ฒด์ธ์์ ์ค์ํ ํํฐ์ ๋ํด ์์ผ๋ก ์ญ์ญ ํ๊ณ ๋ค์ด๊ฐ๋ฉด์ ์ดํด๋ฅผ ๋๋๋ค. ๋๋ฌด ๊น๋ค๊ณ ์๊ฐ๋ ์ฌ์ง๊ฐ ์์ง๋ง ์ด๋ฐ ๋ถ๋ถ์ ์ํ๋ ์ฌ๋์ด ๋ถ๋ช ์์ ๊ฒ์ด๋ฏ๋ก ๋ณธ์ธ์ ์์ค๋๋ก ์ดํดํ๋ฉฐ ๊ฐ๋ณ๊ฒ ๋ฃ๋ ๊ฒ์ ์ถ์ฒํ๋ค. (๋๋ 20% ์ ๋ ์ดํดํ ๊ฒ ๊ฐ๋ค..)
๋ง์ฝ ์์ ์ค์ต์ ํตํด ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ด๋ ์์ ๋ฐฉ์์ ์ํ๋ค๋ฉด ์ถ์ฒํ์ง ์๋๋ค. ๊ฐ์ฌ๋๊ณผ ํจ๊ป Spring Security์ ๋ํ ์ฑ ํ ๊ถ์ ์ฝ๋ ๋๋์ด๋ค. ์.. ์ด๋ก 98.5%? ๊ทธ๋ ๋ค๊ณ ์ฝ๋๋ฅผ ์น์ง ์๋ ๊ฒ์ ์๋๋ค. ๋ผ์ด๋ธ์ฝ๋๋ก ์น๋ฉด์ ํ๋๋ฐ ๋ฐ๋ผํ๊ธฐ ํ๋ค์๋ค. ๊ฑฐ์ ์ด๋ก ์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ๋ฐ๋ผ์น์ง ์๊ณ ๊ฐ์ฌ๋์ ๋ง๊ณผ ์ฝ๋์ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๋๋ฐ ์ง์คํ๋ ๊ฒ๋ ์ถ์ฒํ๋ค. (๋๋ ๋์ค์ ํฌ๊ธฐํ๊ณ ํ๊ธฐ ๋ชจ๋์ ๋ค์ด๊ฐ๋ค.)
Security ๋ถ๋ถ ์๊ฐํ์ง ๋ชปํ๋ค..
์๊ฐ์ ๋ชปํ์ง๋ง ๋ชจ๋ ๊ฐ์ ์นดํ ๊ณ ๋ฆฌ์์ Securiy ๋ถ๋ถ์ด ์ฝ๋๋๊ณผ ์ ๋ฆฌํ ์์ด ๊ฐ์ฅ ๋ง๋ค. ๊ทธ์ ๋ ํฌ๊ฒ ๋ค๋ฃจ๊ณ ๋ง์ด ๋ค๋ฃจ๊ณ ๊น๊ฒ ๋ค๋ฃฌ๋ค. ๋ญ๊ฐ ์์ฒญ ๋๋ํ ๋ํ ๊ต์๋๊ป ์์ ์ ๋ฐ๋ ๋๋?? ๊ฐํ ๋จ์ธํ๋ค. ์ด ๊ฐ์๋ฅผ ๋ชจ๋ ์ดํดํ๋ค๋ฉด ๋น์ ์ Spring Security ์ ๋ฌธ๊ฐ๋ผ ํ ์ ์์ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ์ด๋ ค์ ์ง๋ง ํ๋ก์ ํธ์ ์์ด Security ๋ถ๋ถ์์ ๋งํ๋ค๋ฉด ๋ถ๋ช ๋ค์ ์ฐพ์ ๊ฐ์๊ฐ ๋ ๊ฒ ๊ฐ๋ค.
๐ Spring Batch
์ฐธ ์ข์ ๊ฐ์์๋ค. ๋ค๋ฅธ ๋ถ๋ถ์ ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ ์๋ ๊ฒฝํ์ด ์์์ง๋ง Spring Batch๋ ์ ๋ง ์ฒ์์ด์๋ค. ๋๋ถ๋ถ์ด ๊ทธ๋ฌ์ง ์์๊น ์๊ฐ๋๋ค. (๊ฐ์ ์ฃผ์ ๋ก ํ์น ์์ผ๋..) ์ผ๋จ ์ ๋ฌธ์์ ์์ ์ผ๋ก ๋ดค์ ๋ ์ดํดํ๊ธฐ ์ข๋ค. ๊ต์ฅํ ๊ธฐ์ด์ ์ธ ๊ฒ๋ถํฐ ๋จ๊ณ์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ์ ํ ๋ฌด๋ฆฌ์๋ค. Batch ์์ฒด๋ฅผ ๋ชฐ๋ผ๋ ๊ฐ๋ฅ!
๊ฐ ์ฃผ์ ์ ๊ฐ์ ์์์ ์ด๋ก ์ ์ธ ๋ถ๋ถ์ ์ด์ง ๋ค๋ฃจ๊ณ ๋ผ์ด๋ธ ์ฝ๋ฉ์ ๋ค์ด๊ฐ๋ ๊ฐ์ ๋ฐฉ์์ด ์ฐธ ์ข์๋ค. ์ค์ต ์์ ๋ํ ๊ฝค๋ ํํํ๊ฒ ์ง์ฌ์ง ๋๋์ด์๋ค. ๋๊ฐ์ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ๋ฒ์ ์ ์ํค๋ ๋ถ๋ถ๋ ๋์์ ์ด๋ป๊ฒ ์ฝ๋๋ฅผ ํ์ฅ์ฑ ์๊ฒ ์ง์ผ ํ๋์ง ์ดํด๋ณด๋ ๊ฒ๋ ๋ฝ์ธํธ๊ฐ ๋ ๊ฒ์ด๋ค. ์ถ๊ฐ๋ก Batch ๋ถ๋ถ๋ง๊ณ ๊ธฐ๋ฅ Java ์ฝ๋์ ์์ด์๋ ๋ฐฐ์ธ ์ ์ด ๋ง์๋ค. ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ ํผ์ ์ฐพ์๋ณธ Java ๊ด๋ จ ๊ธฐ๋ฅ๋ค์ด ๋ง์๋ค. (๋ถ์กฑํจ์ ๋งค์ฐ ๋๋ ..)
๋ค์์ผ๋ก ๊ฐ์๊ฐ ๊ฐ์ ํ๋ก์ ํธ ํ์ผ์์ ๊ธฐ๋ฅ๋จ์? ๊ฐ์๋จ์ ๋ณ๋ก ํจํค์ง๋ฅผ ๋๋์ด์ ์งํ๋๋ค. ์ฝ๋ฉ์ด๋ผ๋๊ฒ ๊ตฌํํ ์ฝ๋๋ฅผ ๋์ค์ ์ธ์ ๋ ํ์ํ ๋ ๋ด์ผํ๋๋ฐ ๊ฐ์๋ฅผ ๋ฐ๋ผํ๊ธฐ๋ง ํด๋ ์ธ๋ฑ์ฑ์ด ์ ๋๋ ๋๋์ด๋ผ ์ข์๋ค. ( ๋๋ ๊ฐ์๋ณด๋ค ํจํค์ง๋ฅผ ์กฐ๊ธ ๋ ์ธ๋ฐํ๊ฒ ๋๋ด๋ค)
๊ทธ๋ผ ์ฒ์ ๋ฐฐ์๋ณธ Batch ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ค์ ๊ฐ๋จํ๊ฒ ๋ค์ ๊ธฐ์ตํด๋ณด์!!
Job -> Step -> Tasklet / Chunk
Chunk๋ ItemReader -> ItemProcessor -> ItemWriter
ItemReader
ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ๋ฐฐ์น ์ฒ๋ฆฌํ๊ณ ์ถ๋ค๋ฉด?
FlatFileItemReader
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ๋ฐฐ์น ์ฒ๋ฆฌํ๊ณ ์ถ๋ค๋ฉด?
JdbcCursorItemReader, JdbcPagingItemReader, JpaCursorItemReaderBuilder
ItemProcessor
ItemProcessor์์ null์ ๋ฐํํ๋ฉด ItemWriter๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ง ์๋๋ค.
ItemWriter
๋ฐฐ์น ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ์ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด?
FlatFileItemWriter
๋ฐฐ์น ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด?
JpaItemWriter, JdbcBatchItemWriter
์ฒ์ ๋ค๋ค๋ณด๊ธฐ ๋๋ฌธ์ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๊ฐ๋ ์ด ๋ง์ด ์์ง๋ง ์ปค๋ฆฌํ๋ผ ๋๋ก ์ ๋ฐ๋ผ์จ ์ฌ๋์ด๋ผ๋ฉด ํน๋ณํ ํผ์ ์ฐพ์๋ณด๋ฉด์ ๊ณ ์ํ ํ์๋ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๊ณ ๋๋ฌด ์ฝ๋ค๋ ๊ฒ๋ ์๋๋ค. ๊ฐ์ ํ๋ฐ๋ถ์ ... ๋งค~~์ฐ ์ด๋ ต๋ค.. ํ๋ฐ๋ถ์๋ ๋ฐฐ์ด ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ๊ฐ๋จํ๊ฒ ์งํํ ํ๋ก์ ํธ๋ฅผ ํ ๋๋ก ์ฑ๋ฅํฅ์์ ์ํ ์ฌ๋ฌ ์๋๋ฅผ ํด๋ณธ๋ค. Async, Multi-Thread, Partition ๋ฑ ์ฑ๋ฅ๊ฐ์ ์ ํฌ์ธํธ๋ฅผ ์๊ฐํ๊ณ ๊ฐ ์ฑ๋ฅ์ ๋ํ ํ ์คํธ ๊ฒฐ๊ณผ ์งํ๊น์ง ๋ณด์ฌ์ค๋ค. ์ธ์ ๊ฐ ๋ฐฐ์น์์ ์ ๊ตฌํํ ๋ ์ฑ๋ฅ์ ๋ํ ์ด์๊ฐ ์๊ธด๋ค๋ฉด ๋ค์ ๋์์์ ๋ค์ ๊ฒ์ด๋ค.
๐ ๊ณ ์ํ๋ค!!
30์ผ ๋ณ๋ก ๊ธธ์ง ์์ ์๊ฐ์ผ๋ก ์๊ฐ๋๋ค. ๋ ๊น๋นกํ๋ฉด ํ๋ฌ๊ฐ์๋ ๊ฒ ํ ๋ฌ์ด์์ผ๋..
๊ทผ๋ฐ ํ๋ฃจ๋ ๋นผ์ง ์๋ ๊ฒ์ ๋ณ๋ก ๊ธธ์ง ์์ ์๊ฐ์์๋ ํ๋ค์๋ค. (์ค๊ฐ์ ๊ฐ์ ์ถ์ ใ ใ ใ ใ ใ ใ )
3์ฃผ์ฐจ? ์ ๋์์์ผ ์กฐ๊ธ ์ต๊ด์ด ๋๋ ๊ฒ ๊ฐ๋ค. ์ด์ ๋งค์ผ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋๊ฒ ์ต์ํ๋ค. ์์ง๋ ๋ง์ด ๋จ์ ๊ฐ์.. ํผ์๋ง์ ์ฑ๋ฆฐ์ง๋ฅผ ์ด์ด๊ฐ๋ณด์!
์ด๋ค ๊ณ๊ธฐ๋ก๋ ๋ชฉํ๋ฅผ ๋๊ณ ๋ฌ๋ฆฌ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ์จ์ด ์ข์ ๊ฒ ๊ฐ๋ค. ํ๊ธ์ด๋ผ๋ ๋ชฉํ๊ฐ ์ข ๊ทธ๋ ๊ธด ํด๋ ์ด์จ๋ ๋ชฉํ๊ฐ ์๋ฆฝ๋์๊ธฐ์ ํ ์ ์์๋ ๊ฒ ๊ฐ๋ค. ์ค์ค๋ก ์์ง๊ฐ ๊ทธ๋ฆฌ ๊ฐํ์ง ์๋ค๊ณ ์๊ฐ๋๋ ์ฌ๋์๊ฒ ์ ๋ง ๊ฐ์ถํ๊ณ ์ถ๋ค. ๋๋ฌด ์ฌํ ์ฑ์ฐ์ง์ ๋๋ฌด ์ํ๋ค.. ํจ์คํธ์บ ํผ์ค 30์ผ ์ฑ๋ฆฐ์ง.. ๋์๊ฒ ๋ฑ ๋ง๋ ํ์ด๋ฆฌ๊ฐ ๋์ด ์ฃผ์๋ค. ใ
ํจ์คํธ์บ ํผ์ค [์ง์ฅ์ธ ์ค๋ฌด๊ต์ก]
ํ๋ก๊ทธ๋๋ฐ, ์์ํธ์ง, UX/UI, ๋ง์ผํ , ๋ฐ์ดํฐ ๋ถ์, ์์ ๊ฐ์, The RED, ๊ตญ๋น์ง์, ๊ธฐ์ ๊ต์ก, ์๋น์ค ์ ๊ณต.
fastcampus.co.kr
โ ์๊ฐ์ธ์ฆ!!
1. SpringDataJpa ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ
2. SpringBatch ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ
3. SpringSecurity.. ๊ฐ์ฅ ํ๋ค์์ง๋ง ๊ฐ์ฅ ํฌ๊ฒ ๋์์ด ๋ ๋๋ง์ ์๋ฃ
4. ์ฒซ ๋ ..์ ์๊ฐ๊ธฐ๋ก