Post

[Spring] @Bean๊ณผ static ์ฃผ์˜์ 

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” @Configuration + @Bean์—์„œ static ๋ฉ”์†Œ๋“œ๋ฅผ ์“ธ ๋•Œ ์ฃผ์˜ํ•  ์ ์„ ์ •๋ฆฌํ•œ๋‹ค.

@Configuration๊ณผ @Bean์€ ์Šคํ”„๋ง์˜ IoC ์ปจํ…Œ์ด๋„ˆ์— ๋นˆ์˜ ์ƒ์„ฑยท๊ด€๋ฆฌ๋ฅผ ์œ„์ž„ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์— static์„ ๋ถ™์ด๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.


1. static ๋นˆ ์ •์˜ โ€” ๋ฌธ์ œ ์ƒํ™ฉ

1
2
3
4
5
6
7
@Configuration
public class AppConfig {
    @Bean
    public static MyBean myBean() {   // โš ๏ธ static
        return new MyBean();
    }
}

โš ๏ธ static ๋ฉ”์†Œ๋“œ๋กœ ์ •์˜๋œ ๋นˆ์€ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•ด, ์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ์ƒํ™ฉ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ์  2๊ฐ€์ง€:

๋ฌธ์ œ์„ค๋ช…
๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์–ด๋ ค์›€static ๋ฉ”์†Œ๋“œ๋Š” Mock ์ฒ˜๋ฆฌยท์ง์ ‘ ํ˜ธ์ถœ์ด ์–ด๋ ค์›Œ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ณต์žก
์ƒํƒœ ๊ณต์œ  ๋ฌธ์ œstatic์€ ๋ชจ๋“  ๊ณณ์—์„œ ๊ณต์œ ๋˜์–ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ƒํƒœ ๊ณต์œ  ๋ฌธ์ œ ์œ ๋ฐœ

2. ํ•ด๊ฒฐ โ€” ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋กœ

1
2
3
4
5
6
7
@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {   // โœ… ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ
        return new MyBean();
    }
}

๐Ÿ’ก ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋กœ ์ •์˜ํ•˜๋ฉด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋นˆ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑยท๊ด€๋ฆฌํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฝ๊ณ  ์ƒํƒœ ๊ณต์œ  ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋œ๋‹ค.

๋ฐฉ์‹๊ด€๋ฆฌ ์ฃผ์ฒดํ…Œ์ŠคํŠธ
static @Bean๊ฐœ๋ฐœ์ž(์ง์ ‘)์–ด๋ ค์›€
์ธ์Šคํ„ด์Šค @Bean์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์‰ฌ์›€

๐Ÿ“ ์ •๋ฆฌ

1
2
3
@Configuration + @Bean
โ”œโ”€ static ๋ฌธ์ œ  ํ…Œ์ŠคํŠธ ์–ด๋ ค์›€ + ์ƒํƒœ ๊ณต์œ 
โ””โ”€ ํ•ด๊ฒฐ         ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋กœ (์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌ)
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
@Bean์Šคํ”„๋ง ๋นˆ์„ ์ •์˜
static @Bean์ง€์–‘ (๊ด€๋ฆฌยทํ…Œ์ŠคํŠธ ๋ฌธ์ œ)
์ธ์Šคํ„ด์Šค @Bean๊ถŒ์žฅ (์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ)

@Bean์„ ์ •์˜ํ•  ๋•Œ๋Š” static์„ ํ”ผํ•˜๊ณ  ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ์“ฐ์ž. ๊ทธ๋ž˜์•ผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋นˆ์„ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํ…Œ์ŠคํŠธ๋„ ์‰ฌ์›Œ์ง€๋ฉฐ ์ƒํƒœ ๊ณต์œ  ๋ฌธ์ œ๋„ ๋ฐฉ์ง€๋œ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.