Spring์ ์ดํด๋ฅผ ์ํด!!์์๋์!(Spring๊ธฐ๋ณธ)
CI๋ ๋ฌด์์ธ๊ฐ?
- Continuous integration์ ์ฝ์๋ก ์ง์์ ์ธ ํตํฉ์ ๋งํจ.
- ๊ฐ๋ฐ์ด ์๋ฃ๋๋ ์์ ์ ๋จ์๊ธฐ๋ฅ๋ค์ ํตํฉํ๋ ๊ฒ์ด ์๋ ๊ฐ๋ฐ๊ณผ ๋์์ ํตํฉ์ ์งํํจ์ผ๋ก์จ ์ํํธ์จ์ด์ ํ์ง์ ํฅ์์ํค๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
DI๋ ๋ฌด์์ธ๊ฐ?
- Dependency Injection์ ์ฝ์๋ก ์์กด์ฑ ์ฃผ์ ์ด๋ค.
- ์์กด์ ์ธ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๊ฑฐ๋ ์ ์ดํ์ง ์๊ณ , ํน์ ๊ฐ์ฒด์ ํ์ํ ๊ฐ์ฒด ์ธ๋ถ์์ ๊ฒฐ์ ํด์ ์ฐ๊ฒฐ์ํค๋๊ฒ์ด๋ค.
- ์ธํฐํ์ด์ค์์ ๊ฐ์ ธ๋ค ์ฐ๋ฉด ๋๋๊ฒ.
- DI๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฐํฉ๋๋ ๋ฎ์์ง๊ณ ์ ์ฐ์ฑ์ด ๋์์ง.
- ์ค์ ํ์ผ์ ํตํด ๊ฐ์ฒด๊ฐ ์์กด๊ด๊ณ ์ค์ ํจ์ผ๋ก์ ์ธ๋ถ Assembler๊ฐ ๊ฐ์ฒด๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์ ์ํ๊ฒ ๋๋ฉฐ, ๊ฐ์ฒด๋ ์ง์ ์์กดํ๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฒ์ํ ํ์๊ฐ ์์ด์ง๋ฏ๋ก ์ฝ๋์ ๊ด๋ฆฌ๊ฐ ์ฌ์์ง.
AOP๋ ๋ฌด์์ธ๊ฐ?
- ๋ฐ๋ณต๋๋ ๊ฐ์ ์ฝ๋๋ฅผ ๋ถ๋ถ ์ถ์ถํ์ฌ ํต์ฌ๋ก์ง์ ์ํฅ ๋ฏธ์น์ง ์๊ณ ์์ค์ ์ค๋ณต์ ์ค์ด๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๊ฐ์ ์ฝ๋๋ฅผ ์ค๋ณต์ํค์ง ์๊ณ , ๋ฐ๋ก ๋ถ๋ฆฌํด ์ฌ์ฌ์ฉํ๋๋ก ํจ. -> ๊ด๋ฆฌ์ ํจ์จ์ฑ up
- ํฉ์ด์ง Aspect๋ชจ์์ ๋ชจ๋ํ ์ํจ ๊ธฐ๋ฒ(Aspect: ๊ฐ์ฒด ์งํฅ์ธ์ด์ ํด๋์ค์ ๋น์ท)
- Spring์ @Transactional ์ ๋ ธํ ์ด์ ์ด ์ฌ๊ธฐ์ ํด๋น์ด ๋จ.
POJO๋ ๋ฌด์์ธ๊ฐ?
- ์ฃผ๋ก ์๋ฐ ๋ชจ๋ธ์ด๋ ๊ธฐ๋ฅ, ํ๋ ์์ํฌ ๋ฑ์ ๋ฐ๋ฅด์ง ์์ ์๋ฐ ์ค๋ธ์ ํธ๋ฅผ ์ง์นญ.
- ์คํ๋ง ํ๋ ์์ํฌ๋ POJO๋ฐฉ์์ ํ๋ ์์ํฌ์ด๋ค.
Maven
- ์ดํด๋ฆฝ์ค๋ฅผ ํตํด Spring Framework์ฌ์ฉํ ๋ ์ฌ์ฉํจ. (์ดํด๋ฆฝ์ค์ ๋ด์ฅ๋์ด์์) -> ์๋ฐ์ฉ ํ๋ก์ ํธ ๊ด๋ฆฌ ํด
- ํ๋ก์ ํธ ๋น๋ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌํด์ฃผ๋ ๋๊ตฌ
- ๊ฐ๋ฐ์๋ค์ด ์๋ก ๊ฐ์ด ํ๋ ฅํ๋ฉด์ ์ผ์ ํ ์ ์๋๋ก ๊ฐ๋ฐ๋ ๊ฒ.
- pom.xml : package/dependenct์ถ๊ฐํ๊ณ ์ญ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
++ pom.xml์ ํ์ํ dependenct์์ ๋ ์ค๋ฅ ์์ฃผ ๋ฐ์ํ์์..(์ฃผ์ํ๊ณ ํจ๋ถ๋ฌ ๊ฑด๋๋ฆฌ์ง๋ง์..)
SVN์ด๋?
- ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ผ๋ก ์๋ฒ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ํ๋ก๊ทธ๋จ.
- ๋ก์ปฌ๊ณผ SVN์๋ฒ์ ์ปค๋ฐ ๋๋ฒ๋ง ๋ฐฉ์์ผ๋ก SVN๋ฒ์ ์ฒดํฌํด ๋๊ธฐํ ํ๋ ๋ฐฉ์
ORM์ด๋?
- Object Relation Mapping, ๊ฐ์ฒด์์ ๊ด๊ณ ๋งคํ
- ๊ฐ์ฒด์ DB์ ๋ณด ๊ด๊ณ ๋งคํ์์ผ ์ข๋ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ํ๋ ์์ํฌ
- MyBatis๋ฅผ ์ํด VO๋ฅผ ํ ์ด๋ธ ๊ตฌ์กฐ ๊ฐ์ด ๋ง๋๋๊ฒ
- ์ฌ๊ธฐ์ Mapping์ด๋ CRUD๋ฅผ ๋งํจ
- ๊ธฐ์กด JDBC์ ๋ค๋ฅธ์ : VO์ ํ๋๋ช ์ ์ผ๋ฉด ๊ทธ์ ๋ง๋ ๋ฐ์ดํฐ Mapping๋จ.
- ORM์ข ๋ฅ : MyBatis, JPA, iBatis, Hibernate ๋ฑ
Hibernate๋?
- ORM(Object-Relational Mapping)ํ๋ ์์ํฌ ํ์ข ๋ฅ, ๋ง์ด ์ฌ์ฉํ๋ iBatis๋ ๊ฐ์ ๋ถ๋ฅ์ ํ๋ ์์ํฌ
Rest์๋น์ค๋?
- ํ์ฅ์ฑ ์์ฑ์ธ์ด(XML)ํ์ผ๋ก ๋ ์นํ์ด์ง ์ฝ์ด, ์ํ๋ ์ ๋ณด๋ฅผ ์์งํ๋ ๊ธฐ๋ฅ.
- ์น ํ์ด์ง๋ฅผ ๋ง๋๋ ์ฌ๋์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ด์ฉ์ ๊ฐ์ ํ๊ณ ์ฌ์ฉ์๋ ๊ทธ ํ์ด์ง์ URL๋ง ์๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ก ์ฝ์ด ์ ๋ณด ์ป์ ์ ์์.
- ํ์ดํผํ ์คํธ ์ ์ก ๊ท์ฝ(HTTP)๊ณผ XML์ ํฌํจํ ์น ๊ธฐ์ ๋ฐ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ ํํ๋ก์ ๋จ์ ๊ฐ์ฒด ์ ๊ทผ ํ๋กํ ์ฝ(SOAP)๋ณด๋ค ์ฌ์ฉ ๊ฐํธํ๊ณ , ์ฌ์ดํธ ๋ด์ฉ ๊ธฐ์ ํ๋ RSS(RDF Site Summary)์ ์ ๋ณด ํธ์ง ๊ธฐ๋ฅ๊ณ ์ ์ฌํ๋ค.
IOC๋ ๋ฌด์์ธ๊ฐ?
- IOC๋ ํ๋ก๊ทธ๋จ ํ๋ฆ ์ ์ด์ ์ญ์ ์ด๋ผ๊ณ ๋ณด๋ฉด๋จ.
- @Autowired๋ฑ์ ํตํด IOC๊ฐ๋จ. (์ ์ด์ ํ๋ฆ์ด ๋ณํ๋จ)
- ์ฌ์ฉ์๊ฐ ์๋ Spring Framework๊ฐ ํ๋ก๊ทธ๋จ ํ๋ฆ์ ์ฃผ๋ํ๊ฒ ๋จ.
- IOC๊ฐ ์๋ค๋ฉด DIํ ์ ์์.
Lombok
- ํ๋ก๊ทธ๋จ์ด ์ปค์ง์๋ก ๋ณ์, ๋ฉ์๋๋ค์ด ์ ์ ์์ด ๋์ด๋ ๊ฒ์ด๊ณ , ๊ทธ๋ก ์ธํด ๊ด๋ฆฌ๋ ์ถ๊ฐ๋ ํ๋ค์ด์ง๊ฒ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- ๊ฐ๋ฐ์ ์์ฃผ ์ฌ์ฉํ๋ getter/setter, toString(), ์์ฑ์๋ฑ์ ์๋์ผ๋ก ์์ฑํด ์ค.
- @Data, @Getter, @Setterํ์์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ
Java์ Spring ์ฐจ์ด์
- JAVA๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๊ณ , Spring์ ์คํ์์ค ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์ด๋ค.(์ง์ ๋น๊ต๋ ๋ถ๊ฐ)
- ๊ทธ๋ฌ๋ Java EE(Java์์ฒด ์๋ฒ ํ๋ก๊ทธ๋๋ฐ ํ๋ซํผ)์ ์ข ์ข Springํ๋ ์ ์ํฌ์ ๋น๊ต๋จ.
- Springํ๋ ์์ํฌ๋ Javaํ๋ก๊ทธ๋๋จธ๋ค ์ฌ์ด์ ๋งค์ฐ ์ธ๊ธฐ ์์(Spring์ ์ธ์ด ๋ ๋ฆฝ์ ์ด๊ณ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์์ ์ฌ์ฉํ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ ), ์ด๋ EJB(Java EE์ ํจ๊ป ์ ๊ณต ๋จ)์ ๋ํ ๋์ฒด ๋๋ ์ถ๊ฐ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ