๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Spring Quick Start

์Šคํ”„๋ง XML ์„ค์ • ํŒŒ์ผ์˜ <import>, <bean> ์—˜๋ฆฌ๋จผํŠธ

<beans> ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ

<beans> ์—˜๋ฆฌ๋จผํŠธ ์‹œ์ž‘ ํƒœ๊ทธ์— ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋น„๋กฏํ•œ XML ์Šคํ‚ค๋งˆ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ์„ค์ •๋œ๋‹ค.

ํŒŒ์ผ์ด ์ž๋™์„ ์ƒ์„ฑ๋  ๋•Œ, beans ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฉฐ, spring-beans.xsd ์Šคํ‚ค๋งˆ ๋ฌธ์„œ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค.

<bean>, <description>, <alias>, <import> ๋“ฑ ๋„ค ๊ฐœ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


<import> ์—˜๋ฆฌ๋จผํŠธ

<import> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์„ ํฌํ•จํ•จ์œผ๋กœ์จ ํ•œ ํŒŒ์ผ์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•œ ์„ค์ • ํŒŒ์ผ์„ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.


<bean> ์—˜๋ฆฌ๋จผํŠธ

์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์— ํด๋ž˜์Šค๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • class ์†์„ฑ์€ ํ•„์ˆ˜์ด๋‹ค. ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋œ ์ „์ฒด ํด๋ž˜์Šค ๊ฒฝ๋กœ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • id ์†์„ฑ์€ ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ์ด๋ฆ„์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์†์„ฑ๊ฐ’์—๋Š” CamelCase๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ž‘์„ฑ ๊ทœ์น™์— ๋”ฐ๋ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค!
  • id์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” name ์†์„ฑ๋„ ์žˆ๋‹ค. id์™€ ๋‹ค๋ฅด๊ฒŒ ๋‹ค์–‘ํ•œ ๋ฌธ์ž์—ด์„ ํ—ˆ์šฉํ•œ๋‹ค.
  • name๊ณผ id ์†์„ฑ๊ฐ’์€ ๋ชจ๋‘ ์ „์ฒด ์Šคํ”„๋ง ํŒŒ์ผ ๋‚ด์—๊ฒŒ ์œ ์ผํ•ด์•ผ ํ•œ๋‹ค.

<bean> ์—˜๋ฆฌ๋จผํŠธ ์†์„ฑ

init-method ์†์„ฑ, destroy-method ์†์„ฑ ์‹คํ–‰ ํ™”๋ฉด

  1. init-method ์†์„ฑ

    ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์„ค์ • ํŒŒ์ผ์— ๋“ฑ๋ก๋œ ํด๋ž˜์Šค๋ฅผ ๊ฐ์ฒด ์ƒ์„ฑํ•  ๋•Œ ๋””ํดํŠธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

    ๊ฐ์ฒด ์ƒ์„ฑ ํ›„, ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ•  ๋•Œ init-method๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋œ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ init-method๋กœ ์ง€์ •๋œ initMethod()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

  2. destroy-method ์†์„ฑ

    init-method์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

  3. lazy-init ์†์„ฑ

    ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ตฌ๋™๋  ๋•Œ ์„ค์ • ํŒŒ์ผ์— ๋“ฑ๋ก๋œ <bean>๋“ค์€ ์ƒ์„ฑํ•˜๋Š” ์ฆ‰์‹œ ๋กœ๋”ฉ(pre-loading) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ž์ฃผ ์‚ฌ์šฉ ๋˜์ง€ ์•Š๋Š” <bean>์€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

    ์ปจํ…Œ์ด๋„ˆ ๊ตฌ๋™ ์‹œ์ ์ด ์•„๋‹Œ <bean>์ด ์‚ฌ์šฉ๋˜๋Š” ์‹œ์ ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

  4. scope ์†์„ฑ

    ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋นˆ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜์–ด ์šด์šฉ๋œ๋‹ค.

    ์ด ๊ฐœ๋…์„ singleton์ด๋ผ๊ณ  ํ•œ๋‹ค.

    scope์˜ ๊ธฐ๋ณธ ๊ฐ’์€ singleton์œผ๋กœ, scope ์†์„ฑ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ด๋‹ค.

    ๋ฐ˜๋Œ€๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” prototype์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ ์˜ˆ์‹œ

1.
<bean id="test" class="TestClass" init-method="initMethod" />

2.
<bean id="test" class="TestClass" destroy-method="destroyMethod" />

3.
<bean id="test" class="TestClass" lazy-init="true" />

4.
<bean id="test" class="TestClass" scope="singleton" />
<bean id="test" class="TestClass" scope="prototype" />