[Spring ์ž…๋ฌธ] 4. ์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„

2023. 9. 25. 16:57ยท๐Ÿฅ Web/โ›… Back-end | Spring
728x90

1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •

ํšŒ์› ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์„œ๋น„์Šค์™€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ธฐ → ์˜์กด๊ด€๊ณ„ ์ƒ์„ฑ

package hello.hellospring.controller;
import org.springframework.stereotype.Controller;

@Controller
public class MemberController {
}
  • @Controller ๋กœ annotation์„ ํ•˜๊ฒŒ๋˜๋ฉด ์Šคํ”„๋ง ๋นˆ์—์„œ ์–˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ.
private final MemberService memberService;
  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋กํ•ด์„œ ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๊ณต์œ 
@Controller
public class MemberController {
    private final MemberService memberService;
    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}
  • Auto Wired ⇒ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ Member service์™€ ์—ฐ๊ฒฐ์„ ์‹œ์ผœ์คŒ
  • ์—ฌ๊ธฐ์—์„œ MemberService๋Š” ์Šคํ”„๋ง๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ˆœ์ˆ˜ ์ž๋ฐ” ํด๋ž˜์Šค์ด๋ฏ€๋กœ ์Šคํ”„๋ง ์ชฝ์—์„œ MemberService๋ฅผ ์•Œ์•„๋ณผ ๋ฐฉ๋ฒ•์ด ์—†์Œ
    • @Service ๋ฅผ ๋ถ™์—ฌ์„œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋กํ•ด์คŒ
    • @Repository ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€
  • ์ด๋ ‡๊ฒŒ Spring์—์„œ ์ € MemberService์— ๋Œ€ํ•œ ์˜์กด์„ฑ(MemberService)์„ ์ฃผ์ž…! ํ•ด์คŒ

⇒ @Service, @Repository, @Controller ๋ชจ๋‘ @Component ์™€ ๊ฐ™์€ ๊ฒƒ

  • annotation์„ ๋ถ™์—ฌ์ฃผ๋ฉด Spring์— ๋นˆ์œผ๋กœ ๋“ฑ๋ก ํ•˜๋Š” ๊ฒƒ์ด๊ณ ,
  • @AutoWired ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋“ฑ๋ก๋œ ๊ฐ์ฒด๋“ค์„ ์—ฐ๊ฒฐ ํ•ด์ค€๋‹ค.

Q. ์•„๋ฌด๋ฐ๋‚˜ @Component ํ•ด๋„ ๋˜๋‚˜์š”?
A. ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • package ํ•˜์œ„์—๋‹ค๊ฐ€ ๋“ค์–ด๊ฐ„ ๋…€์„๋“ค๋งŒ ๋’ค์ ธ์„œ ๋ฐ˜์˜์„ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • ์Šคํ”„๋ง์€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋นˆ์„ ๋“ฑ๋กํ•  ๋•Œ ์‹ฑ๊ธ€ํ†ค(ํ•˜๋‚˜๋งŒ ๋“ฑ๋กํ•ด์„œ ๊ณต์œ )์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค. ๊ฐ™์€ ์Šคํ”„๋ง ๋นˆ์ด๋ฉด ๋ชจ๋‘ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค

 

2. ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋กํ•˜๊ธฐ

Configuration Class๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

package hello.hellospring;

import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringConfig {

    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository()); // ์˜์กด์„ฑ ์ฃผ์ž…
    }

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

์˜์กด์„ฑ ์ฃผ์ž…์˜ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

1. ์ƒ์„ฑ์ž ์ฃผ์ž… → ์ถ”์ฒœ

public MemberService(MemberRepository memberRepository){
    this.memberRepository = memberRepository;
}

2. ํ•„๋“œ ์ฃผ์ž…(๋ณ„๋กœ ์•ˆ ์ข‹์Œ)

@Autowired private MemberService memberService;

3. setter ์ฃผ์ž…

@Autowired public void setMemberService(MemberService memberService) { 
	this.memberService = memberService; 
}
  • ๋‹จ์  : ๋ˆ„๊ฐ€ ๋ฉค๋ฒ„ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ public ์œผ๋กœ ๋˜์–ด์žˆ์œผ๋‹ˆ๊นŒ ์ค‘๊ฐ„์— ์ž˜๋ชป ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•  ์ˆ˜๋„ ์žˆ์Œ. ์•„๋ฌด๋‚˜ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค.

 

  • ์‹ค๋ฌด์—์„œ๋Š” ์ฃผ๋กœ ์ •ํ˜•ํ™”๋œ ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐ™์€ ์ฝ”๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ์‚ฌ์šฉ
    • ์ผ๋ฐ˜์ ์ธ ๊ฒƒ๋“ค
  • ์ •ํ˜•ํ™”๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋ก
    • ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ interface ๊ธฐ๋ฐ˜์œผ๋กœ DB๋ฅผ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๊ณ  ํ•˜๊ณ  ์žˆ์œผ๋‹ˆ๊นŒ ์š”๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ๋˜๊ฒ ๋‹ค.
    • ์„ค์ • ํŒŒ์ผ๋งŒ ๋ฐ”๊พธ๋ฉด ๋˜๋‹ˆ๊นŒ! 
728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿฅ Web > โ›… Back-end | Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring ์ž…๋ฌธ] 5. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ์›น MVC ๊ฐœ๋ฐœ  (0) 2023.09.25
[Spring ์ž…๋ฌธ] 3. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ  (0) 2023.09.25
[Spring ์ž…๋ฌธ] 2. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ  (0) 2023.06.30
[Spring ์ž…๋ฌธ] 1. ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •  (0) 2023.06.29
'๐Ÿฅ Web/โ›… Back-end | Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring ์ž…๋ฌธ] 5. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ์›น MVC ๊ฐœ๋ฐœ
  • [Spring ์ž…๋ฌธ] 3. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ
  • [Spring ์ž…๋ฌธ] 2. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ
  • [Spring ์ž…๋ฌธ] 1. ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •
darly213
darly213
ํ˜ธ๋ฝํ˜ธ๋ฝํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž
  • darly213
    ERROR DENY
    darly213
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
      • ๐Ÿฌ ML & Data (50)
        • ๐ŸŒŠ Computer Vision (2)
        • ๐Ÿ“ฎ Reinforcement Learning (12)
        • ๐Ÿ“˜ ๋…ผ๋ฌธ & ๋ชจ๋ธ ๋ฆฌ๋ทฐ (8)
        • ๐Ÿฆ„ ๋ผ์ดํŠธ ๋”ฅ๋Ÿฌ๋‹ (3)
        • โ” Q & etc. (5)
        • ๐ŸŽซ ๋ผ์ดํŠธ ๋จธ์‹ ๋Ÿฌ๋‹ (20)
      • ๐Ÿฅ Web (21)
        • โšก Back-end | FastAPI (2)
        • โ›… Back-end | Spring (5)
        • โ” Back-end | etc. (9)
        • ๐ŸŽจ Front-end (4)
      • ๐ŸŽผ Project (8)
        • ๐ŸงŠ Monitoring System (8)
      • ๐Ÿˆ Algorithm (0)
      • ๐Ÿ”ฎ CS (2)
      • ๐Ÿณ Docker & Kubernetes (3)
      • ๐ŸŒˆ DEEEEEBUG (2)
      • ๐ŸŒ  etc. (8)
      • ๐Ÿ˜ผ ์‚ฌ๋‹ด (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๋ฐฉ๋ช…๋ก
    • GitHub
    • Notion
    • LinkedIn
  • ๋งํฌ

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

    • Contact ME!
  • 250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
darly213
[Spring ์ž…๋ฌธ] 4. ์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„
์ƒ๋‹จ์œผ๋กœ

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