์ปดํฌ๋„ŒํŠธ ์Šค์บ”

2023. 9. 2. 18:25ยท ๐’๐ฉ๐ซ๐ข๐ง๐ /๐๐š๐ฌ๐ข๐œ
๋ชฉ์ฐจ
  1. 1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์ด๋ž€?
  2. 2. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋™์ž‘ ๊ณผ์ •
  3. 3. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋Œ€์ƒ

์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์ด๋ž€?

 

@Configuration
public class AppConfig {

    @Bean
    public OrderService orderService() {
        System.out.println("call orderService()");
        return new OrderServiceImpl(discountPolicy());
    }

    @Bean
    public DiscountPolicy discountPolicy() {
        System.out.println("call discountPolicy()");
        return new FixDiscountPolicy();
    }
}

 

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

 

@Configuration
@ComponentScan
public class AutoAppConfig {
}

 

์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ์„ค์ • ์ •๋ณด ํŒŒ์ผ์— @ComponentScan์„ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค. @ComponentScan์€ @Component๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์ž๋™์œผ๋กœ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

@Component
public class OrderServiceImpl implements OrderService {

    private final DiscountPolicy discountPolicy;

    @Autowired
    public OrderServiceImpl(DiscountPolicy discountPolicy) {
        this.discountPolicy = discountPolicy;
    }
}

 

์ด์ œ ์œ„์™€ ๊ฐ™์ด ์ด์ „์— ์ž‘์„ฑํ–ˆ๋˜ OrderServiceImpl, FixDiscountPolicy, RateDiscountPolicy ํด๋ž˜์Šค์— @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๊ฐ ํด๋ž˜์Šค๋Š” ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.

 

OrderServiceImpl์˜ ์ƒ์„ฑ์ž์— ๋ถ™์€ @Autowired๋Š” ์˜์กด๊ด€๊ณ„๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ, ์œ„ ์ฝ”๋“œ์—์„œ๋Š” discountPolicy ๋นˆ์„ ์ฐพ์•„์„œ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


์ด์ „์—๋Š” AppConfig์—์„œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ง์ ‘ ๋ช…์‹œํ–ˆ์ง€๋งŒ, ์ด์ œ๋Š” ์„ค์ • ์ •๋ณด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— @Autowired๋ฅผ ํ†ตํ•ด ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…๋„ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ํ•ด๊ฒฐํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 


2. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋™์ž‘ ๊ณผ์ •

 

์ด์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ด๋ณด์ž.

 


์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ฉด@ComponentScan์— ์˜ํ•ด @Component๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋Š” ์ „๋ถ€ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋œ๋‹ค. ์Šคํ”„๋ง ๋นˆ์˜ ์ด๋ฆ„์€ ํด๋ž˜์Šค๋ช…์˜ ๋งจ ์•ž๊ธ€์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พผ ๊ฒŒ ๋œ๋‹ค.

 


๊ทธ๋ฆฌ๊ณ  @Autowired๊ฐ€ ๋ถ™์–ด ์žˆ๋Š” ๊ณณ์—๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํƒ€์ž…์ด ์ผ์น˜ํ•˜๋Š” ์Šคํ”„๋ง ๋นˆ์„ ์ฐพ์•„์„œ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•ด์ค€๋‹ค.

 


3. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋Œ€์ƒ

์ปดํฌ๋„ŒํŠธ ์Šค์บ”์€ @Component๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค ๋ง๊ณ ๋„ ๋ช‡๋ช‡ ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š”๋ฐ, ๊ฐ๊ฐ @Controller, @Service, @Repository, @Configuration ์ด๋‹ค. ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๋“ค์€ ๋ชจ๋‘ ๋‚ด๋ถ€์ ์œผ๋กœ @Component๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.

 

@ComponentScan(basePackages = "hello.spring")

 

@ComponentScan์€ ํด๋ž˜์Šค๋“ค์„ ์ „๋ถ€ ๋’ค์ ธ์„œ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•  ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„๋‚ธ๋‹ค.

 

์ด์ฒ˜๋Ÿผ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, basePackages ์†์„ฑ์„ ํ†ตํ•ด ํƒ์ƒ‰ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ์—๋Š” hello.spring์˜ ํŒจํ‚ค์ง€์™€ ๊ทธ ํ•˜์œ„ ํŒจํ‚ค์ง€๊ฐ€ ํƒ์ƒ‰ ๋Œ€์ƒ์ด ๋œ๋‹ค. ํƒ์ƒ‰ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š”, @ComponentScan์ด ๋ถ™์€ ์„ค์ • ์ •๋ณด ํด๋ž˜์Šค๊ฐ€ ์†ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋œ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ํƒ์ƒ‰ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ๋ณด๋‹ค๋Š” @ComponentScan์ด ๋ถ™์€ ์„ค์ • ์ •๋ณด ํด๋ž˜์Šค๋ฅผ ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ์— ๋‘”๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” @SpringBootApplication์„ ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ์— ๋‘๋Š”๋ฐ, @SpringBootApplication์ด @ComponentScan์„ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (๊ทธ๋ž˜์„œ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์ด ๋œ๋‹ค!)

'๐’๐ฉ๐ซ๐ข๐ง๐  > ๐๐š๐ฌ๐ข๐œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ  (0) 2023.09.12
์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ๋ฐฉ๋ฒ•  (0) 2023.09.12
์Šคํ”„๋ง์—์„œ์˜ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด  (0) 2023.09.02
์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€?  (0) 2023.09.02
์ œ์–ด์˜ ์—ญ์ „(IoC)๊ณผ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…(DI)์ด๋ž€?  (0) 2023.08.28
  1. 1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์ด๋ž€?
  2. 2. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋™์ž‘ ๊ณผ์ •
  3. 3. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์˜ ๋Œ€์ƒ
'๐’๐ฉ๐ซ๐ข๐ง๐ /๐๐š๐ฌ๐ข๐œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ
  • ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ๋ฐฉ๋ฒ•
  • ์Šคํ”„๋ง์—์„œ์˜ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด
  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€?
gorapaduckoo
gorapaduckoo
gorapaduckoo
์ง„ํ™”์˜ ๋Œ
gorapaduckoo
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๐€๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ
    • ๐‚๐’
      • ๐‰๐š๐ฏ๐š
      • ๐ƒ๐š๐ญ๐š๐›๐š๐ฌ๐ž
      • ๐๐ž๐ญ๐ฐ๐จ๐ซ๐ค
      • ๐„๐ญ๐œ.
    • ๐’๐ฉ๐ซ๐ข๐ง๐ 
      • ๐๐š๐ฌ๐ข๐œ
      • ๐Œ๐•๐‚ (๐Ÿ)
      • ๐’๐ž๐œ๐ฎ๐ซ๐ข๐ญ๐ฒ
    • ๐๐ซ๐จ๐ฃ๐ž๐œ๐ญ๐ฌ
      • ๐‘๐ž๐œ๐จ๐ฎ๐ซ๐ญ๐š
      • ๐’๐ข๐ฅ๐ญ๐š๐ซ๐š๐ž
    • ๐†๐ข๐ญ
    • ๐‘๐ž๐ฏ๐ข๐ž๐ฐ
    • ๐’๐ญ๐ฎ๐๐ฒ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • IOC
  • ๋ฐฑ์ค€
  • BOJ
  • dp
  • DI
  • ๋„คํŠธ์›Œํฌ
  • aop
  • http
  • ํŠธ๋ฆฌ
  • Union-FInd
  • ๋น„ํŠธ๋งˆ์Šคํ‚น
  • ์—๋“œ๋ชฌ๋“œ-์นดํ”„
  • ๋ฝ
  • web
  • Spring ๊ธฐ๋ณธํŽธ
  • spring mvc
  • ๊ตฌํ˜„
  • mvc ํŒจํ„ด
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • CS
  • DFS
  • OOP
  • spring
  • ๋ธŒ๋ฃจํŠธํฌ์Šค
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
gorapaduckoo
์ปดํฌ๋„ŒํŠธ ์Šค์บ”
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.