Skip to content
Go back

[Spring๐ŸŒฑ] Bean ์ง€์—ฐ ์ดˆ๊ธฐํ™”,์ฆ‰์‹œ ์ดˆ๊ธฐํ™”

Edit page

๐ŸŒŸ Spring์—์„œ์˜ ์ดˆ๊ธฐํ™” ๋ฐฉ์‹: Lazy vs Eager

Spring์—์„œ ๋นˆ(bean)์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ธ ์ง€์—ฐ ์ดˆ๊ธฐํ™”(Lazy Initialization)์™€ ์ฆ‰์‹œ ์ดˆ๊ธฐํ™”(Eager Initialization)๊ฐ€ ์žˆ๋‹ค.


๐Ÿš€ ์ฆ‰์‹œ ์ดˆ๊ธฐํ™” (Eager Initialization)

Spring์˜ ๊ธฐ๋ณธ ์„ค์ •์€ ์ฆ‰์‹œ ์ดˆ๊ธฐํ™”์ด๋‹ค.
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋ชจ๋“  ๋นˆ์„ ์ฆ‰์‹œ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ ๋นˆ์ด ์ด๋ฏธ ์ค€๋น„๋˜์–ด ์žˆ์–ด, ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

์žฅ์ 

๋‹จ์ 


โณ ์ง€์—ฐ ์ดˆ๊ธฐํ™” (Lazy Initialization)

์ง€์—ฐ ์ดˆ๊ธฐํ™”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ ๋ชจ๋“  ๋นˆ์„ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๊ณ , ํ•„์š”ํ•  ๋•Œ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ์‹.
@Lazy ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ๋นˆ๋งŒ ์ง€์—ฐ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ „์ฒด ๋นˆ์— ๋Œ€ํ•ด ์ง€์—ฐ ์ดˆ๊ธฐํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜๋„ ์žˆ์–ด.

์žฅ์ 

๋‹จ์ 


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

package com.example.lazyinitialization;

import org.springframework.context.annotation.*;

@Component
class ClassA {
    public ClassA() {
        System.out.println("ClassA initialized");
    }
}

@Component
@Lazy
class ClassB {
    private final ClassA classA;

    public ClassB(ClassA classA) {
        System.out.println("ClassB initialized");
        this.classA = classA;
    }

    public void doSomething() {
        System.out.println("Doing something...");
    }
}

@Configuration
@ComponentScan
public class LazyInitializationExample {

    public static void main(String[] args) {
        var context = new AnnotationConfigApplicationContext(LazyInitializationExample.class);
        System.out.println("Context initialized");

        context.getBean(ClassB.class).doSomething();
    }
}

๐Ÿ–ฅ๏ธ ์ถœ๋ ฅ ๊ฒฐ๊ณผ

์‹คํ–‰๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Œ:

ClassA initialized
Context initialized
ClassB initialized
Doing something...

๐Ÿ“Œ ์š”์•ฝ

๐Ÿ’ก ํŒ
์ง€์—ฐ ์ดˆ๊ธฐํ™”๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์œ ์šฉํ•จ. ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋นˆ์— ์ ์šฉํ•˜๋ฉด ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ค‘์š”ํ•œ ๋นˆ์€ ์ฆ‰์‹œ ์ดˆ๊ธฐํ™”๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒŒ ์ข‹์Œ.


Edit page
Share this post on:

Previous Post
[Spring๐ŸŒฑ] XML Configuration ๐Ÿ“„
Next Post
[DB] ACID (์›์ž์„ฑ,์ผ๊ด€์„ฑ,๊ณ ๋ฆฝ์„ฑ,์ง€์†์„ฑ)