๐ŸŒฟSpring

[Spring] Spring์„ ์“ฐ๋Š” ์ด์œ : Spring์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ๊ณผ ํŠน์ง• feat. EJB

์†Œ์˜ ๐Ÿ€ 2025. 2. 16. 22:52

๐Ÿ€ ๋“ค์–ด๊ฐ€๋ฉด์„œ

์™œ Spring์„ ์‚ฌ์šฉํ• ๊นŒ?

 ํ˜„์žฌ ํ˜„์—…์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹จ์—ฐ Spring์ด 1์œ„์ด๋‹ค.
๊ทธ๋ž˜์„œ ๋‚˜๋„ Spring, SpringBoot๋ฅผ ๋ฐฐ์šฐ๊ณ  ์žˆ์ง€๋งŒ Spring์˜ ์–ด๋–ค ์ ์ด ์ข‹์€์ง€, Spring์„ ์™œ ์“ฐ๋Š”์ง€๋Š” ๋ชฐ๋ž๋‹ค.

๊ทธ๋ƒฅ ๋‚จ๋“ค ๋งŽ์ด ์“ฐ๊ธธ๋ž˜ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์ผ์ง€..ใ…Ž

 

 

 ๋ฐฐ์šฐ๋‹ค ๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ๊ต‰์žฅํžˆ ํŽธ๋ฆฌํ•˜๋ฉด์„œ๋„ ๋นˆ ์ฃผ์ž… ์ˆœ์„œ๋‚˜ ์˜์กด์„ฑ ๋ฌธ์ œ ๋“ฑ ์ดํ•ดํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ๋งŽ์•„ ๋ธ”๋กœ๊ทธ์— Spring์˜ ์›๋ฆฌ๋ฅผ ์ •๋ฆฌํ•ด๊ฐ€๋ฉฐ ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ํ™•์žฅ์„ฑ, ์œ ์ง€๋ณด์ˆ˜๊นŒ์ง€ ๊ณ ๋ คํ•˜๋Š” ์„ค๊ณ„ ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๊ฐ•์˜ ๋“ค์€ ๋‚ด์šฉ์— ์ตœ๋Œ€ํ•œ ๊ตฌ๊ธ€๋ง ํ•˜๊ณ  ์˜์–ด ์›์„œ๋„ ์ฐพ์•„๋ณด๋ฉฐ ํ•œ ๋ฒˆ ์ฐพ์•„๋ณด์•˜๋‹ค.

๐Ÿ’ก ์ฃผ์ œ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ทธ ๋‹ค์ง์˜ ์ฒซ ๋ฒˆ์งธ ๋„์•ฝ์œผ๋กœ, Spring Framework๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ๊ณผ Spring์ด ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ–ˆ๋˜ ์ด์ „ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ฌธ์ œ์ , Spring์˜ ํ•ต์‹ฌ์ ์ธ ํŠน์ง•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

โœ”๏ธ Spring ์ด์ „์— "EJB"๊ฐ€ ์žˆ์—ˆ๋‹ค

Spring์€ EJB์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด EJB๋Š” ๋ฌด์—‡์ธ๊ฐ€?

EJB๋ž€?

  • Enterprise JavaBean
  • ์ž๋ฐ” ํ”Œ๋žซํผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ
  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋จ

1990๋…„๋Œ€ ํ›„๋ฐ˜- 2000๋…„๋Œ€ ์ดˆ๋ฐ˜๊นŒ์ง€ ๊ธฐ์—… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์žก์„ฑ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฉฐ,
๋Œ€๊ทœ๋ชจ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ, ๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ณต์žกํ•œ ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ๊ด€๋ฆฌํ•ด์•ผ ํ–ˆ๋‹ค.

์ด๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์บก์Аํ™”ํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜์—ฌ ์ผ๊ด€๋œ ๊ฐœ๋ฐœ ๋ฐฉ์‹์„ ์ง€์›ํ•˜๋Š” EJB๊ฐ€ ์ž๋ฐ” EE(Enterprise Edition)์˜ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋กœ ๋„์ž…๋˜์—ˆ๋‹ค.

EJB์˜ ์ฃผ์š” ๋ชฉ์ 

  • ํ‘œ์ค€ํ™”๋œ ์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ ์ œ๊ณต: ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‘œ์ค€ํ™”๋œ ์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ์„ ์ œ๊ณต.
  • ์ธํ”„๋ผ ์„œ๋น„์Šค ์ž๋™ํ™”: ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๋ณด์•ˆ, ์›๊ฒฉ ์ ‘๊ทผ ๋“ฑ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์ˆ˜์ ์ธ ์ธํ”„๋ผ ์„œ๋น„์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ง€์›.
  • ํ™•์žฅ์„ฑ ๋ฐ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ์ง€์›: ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™•์žฅ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•จ.

๐Ÿ”Ž Spring์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

EJB์˜ ํ•œ๊ณ„

EJB๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ–ˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค.

 

1. ํ…Œ์ŠคํŠธ์˜ ์–ด๋ ค์›€
 ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹จ์ผ JVM์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค ํ•ญ์ƒ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต๋‹ค.
์›๊ฒฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๋กœ์ปฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋“  EJB ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€
์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์˜์กด์„ฑ์ด ๋†’์•„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๋‹ค.

 

2. ๋ณต์žกํ•œ ๊ฐœ๋ฐœ ๊ณผ์ •
 Home Interface: EJB ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ/์ œ๊ฑฐ ๋‹ด๋‹น, Remote Interface: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ˜ธ์ถœํ•  ๋ฉ”์„œ๋“œ ์ •์˜, Bean Class: ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌํ˜„์ฒด ๋“ฑ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๊ณ , XML ์„ค์ • ํŒŒ์ผ์„ ํ•„์ˆ˜์ ์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ๋‹ค.
์ด๋กœ ์ธํ•ด ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ณ , XML ์„ค์ •์˜ ์œ ์ง€๋ณด์ˆ˜๋„ ์–ด๋ ค์› ๋‹ค.

 

3. ๋ฌด๊ฑฐ์šด ์ปจํ…Œ์ด๋„ˆ

EJB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑ์„ ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋กœ์šฐ๋ ˆ๋ฒจ์˜ ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ์ƒํƒœ ๊ด€๋ฆฌ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ๋ฆฌ์†Œ์Šค ํ’€๋ง๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋กœ์šฐ๋ ˆ๋ฒจ์˜ API ๋”ฐ์œ„๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 EJB์˜ ๋ชฉํ‘œ๋Š” ํŽธ๋ฆฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ด์—ˆ์ง€๋งŒ, ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ๊ณผ๋„ํ•œ ์š•์‹ฌ์„ ๋ถ€๋ฆฐ ํƒ“์— ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฌด๊ฑฐ์› ๋‹ค.
EJB ๊ฐ์ฒด์˜ ์ƒ์„ฑ, ์ œ๊ฑฐ, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๋ณด์•ˆ ์„ค์ • ๋“ฑ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ, ์ด๋กœ ์ธํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

4. ์˜์กด์„ฑ ๊ฐ•ํ•œ ์„ค๊ณ„
 EJB๋Š” JNDI(Java Naming and Directory Interface)๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ฐพ๋Š” ๊ตฌ์กฐ๋กœ ํŠน์ • ์„œ๋ฒ„ ํ™˜๊ฒฝ๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ๊ตฌ์กฐ์ด๋‹ค.
์ด๋Š” ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ณ , ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ๋ฐฐํฌ๋„ ์–ด๋ ต๊ณ , ์‹คํ–‰๋„ ์–ด๋ ต๊ณ , ์—ฌ๋Ÿฌ๋ชจ๋กœ ๋น„ํšจ์œจ์ ์ธ ๋ฉด์ด ์žˆ์—ˆ๊ณ 
ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๋กœ ๋‚จ๊ฒŒ ๋˜์—ˆ๋‹ค.

Spring์˜ ๋“ฑ์žฅ ๊ณ„๊ธฐ

 ์ด๋Ÿฌํ•œ EJB์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 2003๋…„ ๋กœ๋“œ ์กด์Šจ์ด "Expert One-on-One J2EE Design and Development"๋ผ๋Š” ์ฑ…์„ ์ถœ๊ฐ„ํ•˜๋ฉฐ Spring Framework๋ฅผ ๋ฐœํ‘œํ–ˆ๋‹ค.

 ์ฑ… ์ดˆ๋ฐ˜๋ถ€์—์„œ ๋กœ๋“œ ์กด์Šจ์€ EJB๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทผ๊ฑฐ๋กœ EJB์˜ ๋ฌธ์ œ์ ์„ ์ง€์ ํ•œ๋‹ค.

  1. ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต๋‹ค
  2. ๋ฐฐํฌ๋„ ์–ด๋ ต๋‹ค.
  3. Remote Interface๋ฅผ ์‚ฌ์šฉํ•˜๋Š” EJB๋Š” ์„ค๊ณ„๋„ ์–ด๋ ต๋‹ค.

 EJB๋ฅผ ๋Œ€์ฒดํ•  ๋ฐฉ์•ˆ์„ 3๋งŒ ๋ผ์ธ ์ •๋„์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค๋ฉฐ ์„ค๋ช…ํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉ๋œ ์˜ˆ์‹œ์šฉ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์› ๋˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋กœ๋“œ ์กด์Šจ์„ ์„ค๋“ํ•˜์—ฌ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค.

โœจ Spring

Spring์˜ ์ •์˜: ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ž€?

๊ทธ๋ ‡๋‹ค๋ฉด ์Šคํ”„๋ง์€ ๋ญ”๋ฐ EJB์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ–ˆ์„๊นŒ? ์ด ์ •์˜์— ์Šคํ”„๋ง์˜ ํŠน์ง•์ด ๋‹ค ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ฒฝ๋Ÿ‰๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

 

ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด๋ณด์ž.

 

1. ์˜คํ”ˆ ์†Œ์Šค

  • ์•ž์„œ ๋“ฑ์žฅ ๊ณ„๊ธฐ์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ ๋ฐœ์ „๋œ Spring์€ Apache 2.0 ๋ผ์ด์„ ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.
  • ๋ฌด๋ฃŒ์ด๋ฉฐ, ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „์— ์ฐธ์—ฌํ•˜๊ณ , ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ํ™œ๋ฐœํ•˜๋‹ค.

2. ๊ฒฝ๋Ÿ‰๊ธ‰

  • ๊ธฐ์กด EJB์˜ ๋ฌด๊ฒ๊ณ  ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ–ˆ๋‹ค.
  • ํŠน์ • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ–ˆ๋˜ EJB์™€ ๋‹ฌ๋ฆฌ POJO(Plain Old Java Obejct) ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋œ ์Šคํ”„๋ง์€ Tomcat, Jetty, Undertow ๊ฐ™์€ ๊ฐ€๋ฒผ์šด ์›น ์„œ๋ฒ„์—์„œ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฆ‰, ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์œ ์—ฐํ•˜๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋˜ํ•œ Java ์ฝ”๋“œ์™€ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ ์„ค์ •์„ ์ง€์›ํ•˜๋ฉฐ XML ์„ค์ •๋„ ์ตœ์†Œํ™”๋˜์–ด ๊ฐ€๋ณ๊ณ  ๋‹จ์ˆœํ•˜๋‹ค.

3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ: ํŠน์ • ๊ณ„์ธต์ด๋‚˜, ๊ธฐ์ˆ , ์—…๋ฌด ๋ถ„์•ผ์— ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ  ์• ์ธจ๋ฆฌ์ผ€์ด์…˜์˜ ์ „ ์˜์—ญ์„ ํฌ๊ด„ํ•˜๋Š” ๋ฒ”์šฉ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋‚˜๋จธ์ง€ ๊ธฐ๋Šฅ(ํŠธ๋žœ์žญ์…˜, ๋ณด์•ˆ, ๊ฐ์ฒด ๊ด€๋ฆฌ ๋“ฑ)์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒŒ ํฌ์ธํŠธ์ด๋‹ค.
  • EJB, Spring ๋ชจ๋‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ง€๋งŒ EJB๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ณ  ์œ ์—ฐํ•˜๋‹ค.

4. ํŽธํ•œ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ

  • ์Šคํ”„๋ง์˜ ๋ชฉํ‘œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ ๋ณต์žกํ•œ ๊ฐœ๋ฐœ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

Spring์˜ ํ•ต์‹ฌ ๊ฐœ๋…

EJB์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํŽธํ•˜๊ฒŒ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์Šคํ”„๋ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ

์Šคํ”„๋ง์ด ๊ฒฝ๋Ÿ‰๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ธ ์ด์œ ๋Š”,
๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ๋ฌด๊ฑฐ์šด ์„œ๋ฒ„๋‚˜ ๋ณต์žกํ•œ ์„ค์ • ์—†์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ๊ฐ์ฒด์˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ
    ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์˜์กด์„ฑ ์ฃผ์ž… ์ฒ˜๋ฆฌ
    ๊ฐ ๊ฐ์ฒด์—์„œ ์ง์ ‘ ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ์ฒด์— ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•œ๋‹ค.
  • ์„ค์ • ๊ธฐ๋ฐ˜ ๋™์ž‘
    ์ปจํ…Œ์ด๋„ˆ๋Š” ์„ค์ • ํŒŒ์ผ+์–ด๋…ธํ…Œ์ด์…˜์— ๊ธฐ๋ฐ˜ํ•ด์„œ ๊ฐ์ฒด(์Šคํ”„๋ง ๋นˆ)์„ ์ƒ์„ฑํ•œ๋‹ค.

๊ธฐ์กด์˜ ๋ฌด๊ฑฐ์šด EJB์˜ ์ปจํ…Œ์ด๋„ˆ์™€ ๋‹ฌ๋ฆฌ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ™”๊ณ ,
Spring์€ ๋‚ด์žฅํ˜• ์„œ๋ฒ„(์˜ˆ: Tomcat, Jetty ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์„ค์ • ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ œ์–ด์˜ ์—ญ์ „(Inversion of Control, IoC)

๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ์ธํŠธ๋Š” "๊ฐ์ฒด ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ์˜ ์ฃผ์ฒด"์ด๋‹ค.
์ œ์–ด์˜ ์—ญ์ „์€ ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์›์น™์ด๋‹ค.

 

์ „ํ†ต์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ๋ฆ„์„ ์ œ์–ดํ–ˆ๋‹ค.
๊ฐœ๋ฐœ์ž๊ฐ€ ์–ธ์ œ ์–ด๋А ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ๊ธฐํ• ์ง€ ์–ด๋–ค ํ๋ฆ„์œผ๋กœ ์‹คํ–‰ํ• ์ง€๋ฅผ ๋ชจ๋‘ ์ •ํ–ˆ๋‹ค.


์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์ง์ ‘ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ œ์–ด ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ฒŒ ํ•œ๋‹ค๋ฉด
๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด์˜ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ, ๊ทธ๋ฆฌ๊ณ  ์˜์กด์„ฑ ์ฃผ์ž…์„ ์‹ ๊ฒฝ ์“ธ ํ•„์š” ์—†๋‹ค.

 

์ด์ฒ˜๋Ÿผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ '๊ฐœ๋ฐœ์ž'์—์„œ 'ํ”„๋ ˆ์ž„์›Œํฌ'๋กœ ์—ญ์ „๋˜์–ด
๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์„ธ์„ธํ•˜๊ฒŒ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ 
์˜ค์ง ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI)

IoC๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์˜์กด์„ฑ ์ฃผ์ž…(DI)์™€ ์˜์กด์„ฑ๊ฒ€์ƒ‰(DL) ๋“ฑ์ด ์žˆ๋Š”๋ฐ ์Šคํ”„๋ง์€ ๊ธฐ๋ณธ์ ์œผ๋กœ DI ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

์˜์กด์„ฑ ์ฃผ์ž…์€ ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ง์ ‘ ์„ค์ •ํ•˜๋Š” ๋Œ€์‹ , ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค.
์ฆ‰, ํด๋ž˜์Šค ๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋ฅผ Bean ์„ค์ •์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • ์ƒ์„ฑ์ž ์ฃผ์ž…
  • ์„ธํ„ฐ ์ฃผ์ž…
  • ํ•„๋“œ ์ฃผ์ž…

์˜์กด์„ฑ ์ฃผ์ž…์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ: ๊ฐ์ฒด ๊ฐ„์˜ ์ง์ ‘์ ์ธ ์˜์กด์„ฑ์ด ์ค„์–ด๋“ ๋‹ค.
  • ์œ ์—ฐ์„ฑ ํ–ฅ์ƒ: ์˜์กด์„ฑ์„ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ: Mock ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€: ๋ชจ๋“ˆ ๊ฐ„์˜ ๋…๋ฆฝ์„ฑ์ด ๋†’์•„์ ธ ์žฌ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜๋‹ค.

๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Aspect-Oriented Programming, AOP)

๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(์ฃผ๋œ ๊ด€์‹ฌ์‚ฌ)๊ณผ ๊ณตํ†ต์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ(ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ)์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค.

ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ์— ๊ฑธ์ณ ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ
๋กœ๊น…, ๋ณด์•ˆ, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ด๋‹ค.
๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์— ํšก๋‹จ ํ˜•ํƒœ๋กœ ํฌํ•จ๋œ๋‹ค๋Š” ์˜๋ฏธ์—์„œ ๋ถ™์—ฌ์ง„ ์ด๋ฆ„์ด๋‹ค.

๊ณตํ†ต ๋ชจ๋“ˆ์€ ํ•„์š”ํ•œ ์‹œ์ ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์‚ฝ์ž…๋˜์–ด ์‹คํ–‰๋˜์–ด
์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ , ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค.

์ •๋ฆฌ: EJB์™€ Spring ๋น„๊ต

์Šคํ”„๋ง์˜ ์–ด๋–ค ์ ์ด ์ข‹์•„ ์Šคํ”„๋ง์„ ์“ฐ๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค.

Spring vs EJB

  • ๊ฒฝ๋Ÿ‰ํ™”: Spring์€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜๊ณ , ๋ณต์žกํ•œ ์„ค์ • ์—†์ด ๊ฐ€๋ณ๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. EJB๋Š” ๋ฌด๊ฑฐ์šด ์ปจํ…Œ์ด๋„ˆ๋กœ, ์„ฑ๋Šฅ์— ๋ถ€๋‹ด์„ ์ฃผ๊ณ  ๋ณต์žกํ•œ ์„ค์ •์„ ์š”๊ตฌํ–ˆ๋‹ค.
  • ๋ฐฐํฌ ์šฉ์ด์„ฑ: Spring์€ ๋‚ด์žฅ ์„œ๋ฒ„๋ฅผ ์ง€์›ํ•˜์—ฌ, ๋ณ„๋„์˜ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์„ค์ • ์—†์ด ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค. EJB๋Š” ๋ณ„๋„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ด ๋ฐฐํฌ๊ฐ€ ๋ณต์žกํ–ˆ๋‹ค.
  • ์˜์กด์„ฑ ์ฃผ์ž…(DI): Spring์€ IoC(์ œ์–ด์˜ ์—ญ์ „) ์›์น™์„ ์ ์šฉํ•˜์—ฌ ๊ฐ์ฒด ๊ด€๋ฆฌ์™€ ์˜์กด์„ฑ ์ฃผ์ž…์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. EJB๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜๊ณ , ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ ๋น„ํšจ์œจ์ ์ด์—ˆ๋‹ค.
  • ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(AOP): Spring์€ AOP๋ฅผ ํ†ตํ•ด ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค.

 

ํŠน์ง• Spring EJB (Enterprise JavaBeans)
์ปจํ…Œ์ด๋„ˆ ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ (Spring IoC ์ปจํ…Œ์ด๋„ˆ) ๋ฌด๊ฑฐ์šด ์ปจํ…Œ์ด๋„ˆ (EJB ์ปจํ…Œ์ด๋„ˆ)
๊ฐ์ฒด ๊ด€๋ฆฌ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ Spring ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋”ฐ๋ผ EJB ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ฒ˜๋ฆฌ, ์„ค์ • ๋ณต์žก๋„ ๋†’์Œ
์„ค์ • XML ์„ค์ • ๋˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ • ๊ฐ€๋Šฅ ๋Œ€๋ถ€๋ถ„ XML ์„ค์ •์ด ํ•„์š”ํ•˜๊ณ  ์„ค์ •์ด ๋ณต์žกํ•จ
๋ฐฐํฌ ๋‚ด์žฅ ์„œ๋ฒ„ ์ง€์› (์˜ˆ: Spring Boot๋กœ Tomcat, Jetty ๋“ฑ ์‚ฌ์šฉ) EJB ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”
์˜์กด์„ฑ ๊ด€๋ฆฌ ์˜์กด์„ฑ ์ฃผ์ž…(DI)์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„ ์˜์กด์„ฑ ๊ด€๋ฆฌ EJB ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์˜์กด์„ฑ ๊ด€๋ฆฌ
์„ฑ๋Šฅ ๊ฒฝ๋Ÿ‰ํ™”๋œ ์„ค๊ณ„๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ฐ€๋Šฅ ๋ฌด๊ฒ๊ณ  ๋ณต์žกํ•˜์—ฌ ์„ฑ๋Šฅ์ด ๋‚ฎ์„ ์ˆ˜ ์žˆ์Œ
ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ AOP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ EJB ๋‚ด์žฅ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์‚ฌ์šฉ
ํ™•์žฅ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ ๋ชจ๋‘ ์–ด๋ ค์›€
ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ Mock ๊ฐ์ฒด ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฌ์›€ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๊ณ , EJB ์ปจํ…Œ์ด๋„ˆ์— ์˜์กด
๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ ์ฒ˜๋ฆฌ AOP๋กœ ๊ณตํ†ต ๊ธฐ๋Šฅ(๋กœ๊น…, ๋ณด์•ˆ, ํŠธ๋žœ์žญ์…˜ ๋“ฑ)์„ ๋ถ„๋ฆฌ ๋ณต์žกํ•œ ์„ค์ •์ด ํ•„์š”

๐Ÿ“‹ ์ฐธ๊ณ ์ž๋ฃŒ

์ถ”์ฒœ
[์Šคํ”„๋ง] ์Šคํ”„๋ง์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : ๋กœ๋“œ ์กด์Šจ์˜ ์ฑ…์„ ๊ฐ€์žฅ ์ž˜ ์ •๋ฆฌํ•œ ๊ธ€์ด๋ผ๊ณ  ๋ณธ๋‹ค. ๊ฐ•์ถ”!
[Spring] Spring vs EJB :Spring๋ฟ๋งŒ ์•„๋‹ˆ๋ผ EJB์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๊ธฐ์ˆ ํ•œ ๊ธ€์ด๋‹ค.

"์Šคํ”„๋ง 5 ๋งˆ์Šคํ„ฐ 2/e", ๋ž‘๊ฐ€ ๋ผ์˜ค ์นด๋ผ๋‚จ, ์—์ด์ฝ˜์ถœํŒ์‚ฌ, 2020

 

๋ฐ˜์‘ํ˜•