๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
FOR SW ENGINEER๐Ÿ‘ฉ‍๐Ÿ’ป/SPRING

Spring ๊ธฐ๋ณธ๊ฐœ๋…๋“ค ์ •๋ฆฌ

by ์”จ๋‹ˆ 2022. 2. 8.
728x90

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์™€ ํ•จ๊ป˜ ์ œ๊ณต ๋จ)์— ๋Œ€ํ•œ ๋Œ€์ฒด ๋˜๋Š” ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ

728x90