5 min read

[Spring ๊ณต๋ถ€] Spring ํ•ต์‹ฌ ์›๋ฆฌ - 3

Table of Contents

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

๊ฐœ์š”

์ด๋ฒˆ Spring Boot ์Šคํ„ฐ๋””๋Š” ๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ์˜ ๊น€์˜ํ•œ๋‹˜๊ป˜์„œ ์ธํ”„๋Ÿฐ์— ์˜ฌ๋ ค์ฃผ์‹œ๋Š” ์ž๋ฐ” ์Šคํ”„๋ง ์™„์ „ ์ •๋ณต ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค. ๊ทธ ์‹œ๋ฆฌ์ฆˆ์˜ ๊ฐ€์žฅ ์ฒซ ๊ฐ•์˜์ธ ์Šคํ”„๋ง ์ž…๋ฌธ - ์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ, ์›น MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ ์„ ๋๋‚ด๊ณ , ๋‹ค์Œ ๊ฐ•์˜์ธ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Spring ์ปจํ…Œ์ด๋„ˆ์™€ Spring ๋นˆ์— ๋Œ€ํ•œ ๊ฒƒ์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

Spring ์ปจํ…Œ์ด๋„ˆ

ApplicationContext

์Šคํ”„๋ง์—์„œ๋Š” ApplicationContext ๋ผ๋Š” ๊ฒƒ์„ Spring ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•œ๋‹ค. ์ด์™ธ์—๋„ BeanFactory ๊ฐ€ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์ด์— ๋Œ€ํ•ด์„œ๋Š” ํ›„์ˆ ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

์ด์ „ ํฌ์ŠคํŠธ๋ฅผ ๋ณด๋ฉด, ์šฐ๋ฆฌ๋Š” DriveConfig ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ(new)ํ•˜๊ณ  ๊ด€๋ฆฌํ–ˆ์ง€๋งŒ, ์ด์ œ๋ถ€ํ„ฐ๋Š” Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ด€๋ฆฌํ•  ๊ฒƒ์ด๋‹ค. Spring ์ปจํ…Œ์ด๋„ˆ๋Š” @Configuration ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋ฅผ ์„ค์ • ์ •๋ณด๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด ํด๋ž˜์Šค์—์„œ @Bean ์ด ๋ถ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ํ˜ธ์ถœํ•ด์„œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๋ฅผ Spring ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋กํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ Spring ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ ๊ฐ์ฒด๋ฅผ Spring ๋นˆ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋“ฑ๋ก๋œ Spring ๋นˆ์—๋Š” ๊ฐ์ž ์ด๋ฆ„์ด ์žˆ๋Š”๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ @Bean ์ด ๋ถ™์€ ๋ฉ”์„œ๋“œ ๋ช…์„ ๋นˆ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

์ง์ ‘ Config ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜์—ฌ DI ์ปจํ…Œ์ด๋„ˆ๋กœ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ์šฐ๋ฆฌ๊ฐ€ Config ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ๋นผ๋‹ค ์ผ์–ด์•ผ ํ–ˆ๋Š”๋ฐ, Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด์„œ ํ•„์š”ํ•œ Spring ๋นˆ(๊ฐ์ฒด)๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ๋Š” applicationContext.getBean() ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋นˆ์„ ์ฐพ์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

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

์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๊ณผ์ •

ApplicationContext ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๊ตฌ์„ฑ ์ •๋ณด์˜ ํ˜•ํƒœ์—๋Š” ์ž๋ฐ” ์ฝ”๋“œ์™€ XML ํŒŒ์ผ ๋‘ ๊ฐ€์ง€ ํ˜•ํƒœ๊ฐ€ ์žˆ๋‹ค. ์ตœ๊ทผ์—๋Š” XML ๋ฐฉ์‹์„ ์ž˜ ์“ฐ์ง€ ์•Š๊ธฐ๋„ ํ•˜๊ณ , ๋˜ XML ๋ฐฉ์‹์˜ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์•Œ์•„๋ณด๊ธฐ ์–ด๋ ค์šธ ์ •๋„๋กœ ๋ณต์žกํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋‹จ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ์ •ํ•˜์—ฌ ๊ธ€์„ ์จ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์„ค์ • ์ •๋ณด์˜ ์ด๋ฆ„์€ AppConfig ์ด๊ณ , ๋‚ด๋ถ€์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

@Configuration
public class AppConfig {

    @Bean
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }

    @Bean
    public DiscountPolicy discountPolicy() {
        return new RateDiscountPolicy();
    }
}

๊ฐ•์˜์—์„œ ๋‹ค๋ฃฌ ๊ฐ„๋‹จํ•œ ์ฃผ๋ฌธ ๊ด€๋ฆฌ ์˜ˆ์ œ์˜ AppConfig ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

public class SampleApplication {
    ApplicationContext ac = new AnnotationConfigApplitacionContext(AppConfig.class);
}

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ Spring ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

1. Spring ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

์ผ๋‹จ, Spring ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. Spring ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—๋Š” Spring ๋นˆ ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋งˆ์น˜ Map ์˜ ํ˜•ํƒœ๋กœ ๋นˆ ์ด๋ฆ„๊ณผ ๋นˆ ๊ฐ์ฒด๋ฅผ ๋งคํ•‘๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.

spring_container_01.png

2. Spring ๋นˆ ๋“ฑ๋ก

์ด์ œ, ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด ๋นˆ ์ €์žฅ์†Œ๋ฅผ ์ฑ„์šฐ๊ฒŒ ๋œ๋‹ค.

spring_container_02.png

์ด ๋•Œ, ์ฐธ๊ณ ๋กœ ๋นˆ ์ด๋ฆ„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์ด ๋˜์ง€๋งŒ, @Bean(name="mainMemberService") ์™€ ๊ฐ™์ด ์ง์ ‘ ์„ค์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋•Œ ์ฃผ์˜ํ•ด์ค˜์•ผ ํ•  ์ ์€, ๋นˆ์˜ ์ด๋ฆ„์€ ํ•ญ์ƒ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋นˆ์˜ ์ด๋ฆ„์ด ๊ฒน์น˜๋ฉด ๊ธฐ์กด์— ๋“ฑ๋ก๋œ ๋นˆ์„ ๋ฎ์–ด์จ๋ฒ„๋ฆฌ๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ์ตœ๊ทผ Spring Boot์˜ ๊ฒฝ์šฐ ์•„์˜ˆ ๋นŒ๋“œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

3. Spring ๋นˆ ์˜์กด ๊ด€๊ณ„ ์„ค์ •

Spring ๋นˆ ๋“ฑ๋ก์ด ๋๋‚˜๋ฉด, ๊ฐ€๋ น ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ Spring ์ปจํ…Œ์ด๋„ˆ์— ๋นˆ๋“ค์ด ๋“ฑ๋ก๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

spring_container_03.png

์—ฌ๊ธฐ์„œ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ , Spring ๋นˆ ์‚ฌ์ด์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ์˜์กด ๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•ด์ค€๋‹ค.

spring_container_04.png

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

์—„๋ฐ€ํ•˜๊ฒŒ๋Š”

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

BeanFactory, ApplicationContext

์œ„์—์„œ Spring ์ปจํ…Œ์ด๋„ˆ์—๋Š” ApplicationContext ๋ฟ ์•„๋‹ˆ๋ผ, BeanFactory ๋„ ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด ๋‘˜์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

์‚ฌ์‹ค ๋ณ„๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ApplicationContext ๊ฐ€ BeanFactory ๋ฅผ ์ƒ์†ํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๋” ํ™•์žฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

BeanFactory

  • Spring ์ปจํ…Œ์ด๋„ˆ์˜ ์ตœ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค
  • Spring ๋นˆ์„ ์กฐํšŒํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ ๋ชจ๋‘ ์—ฌ๊ธฐ ๋ช…์‹œ๋˜์–ด ์žˆ์Œ
  • ์˜ˆ๋ฅผ ๋“ค์–ด getBean() ์ œ๊ณต

ApplicationContext

  • BeanFactory ๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์ธ BeanFactory ์˜ ๊ธฐ๋Šฅ์€ ๋ชจ๋‘ ์ œ๊ณต
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋นˆ ๊ด€๋ฆฌ ์ด์™ธ์˜ ์ˆ˜๋งŽ์€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณต

ApplicationContext๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ

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

๋”ฐ๋ผ์„œ

๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ทนํ•œ์œผ๋กœ ๋ถ€์กฑํ•œ ์„œ๋ฒ„(??? : RAM์€ 640KB๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.)๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋ƒฅ ApplicationContext ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๊ตณ์ด ์ œ๊ณต๋˜๋Š” ์ˆ˜๋งŽ์€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ๋“ค์„ ๋งˆ๋‹คํ•  ์ด์œ ๊ฐ€ ์—†๋‹ค.

๋‹ค์Œ์€

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

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” ์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

๋.