[Spring][혼곡] 4. μŠ€ν”„λ§ 빈과 μ˜μ‘΄κ΄€κ³„ - (1) μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”κ³Ό μžλ™ μ˜μ‘΄κ΄€κ³„ μ„€μ •

2021. 8. 21. 17:21Β·πŸ“ Language/✏ JAVA

μŠ€ν”„λ§ λΉˆκ³Ό μ˜μ‘΄κ΄€κ³„

μ§€κΈˆκΉŒμ§€ νšŒμ› μ„œλΉ„μŠ€λ₯Ό 톡해 νšŒμ› κ°€μž…κ³Ό 쑰회λ₯Ό ν•˜μ—¬ νšŒμ› 리포지토리에 μ €μž₯ν•˜κ³  λ‹€μ‹œ κΊΌλ‚Ό 수 μžˆλ„λ‘ λ‘œμ§μ„ λ§Œλ“€μ—ˆλ‹€. 이젠 웹에 보이도둝 화면에 λ„μ›Œμ•Ό ν•˜λŠ”λ°, 이 μž‘μ—…μ„ μœ„ν•΄μ„  Controller와 Viewκ°€ ν•„μš”ν•˜λ‹€.

 

μ—¬κΈ°μ„œ νšŒμ› μ»¨νŠΈλ‘€λŸ¬λŠ” νšŒμ› μ„œλΉ„μŠ€λ₯Ό 톡해 νšŒμ› κ°€μž…κ³Ό 데이터 쑰회λ₯Ό ν•œλ‹€.

μ΄λŸ¬ν•œ 관계λ₯Ό μ„œλ‘œ μ˜μ‘΄κ΄€κ³„κ°€ μžˆλ‹€κ³  ν‘œν˜„ν•˜λŠ”λ°, μ¦‰ νšŒμ› μ»¨νŠΈλ‘€λŸ¬λŠ” νšŒμ› μ„œλΉ„μŠ€λ₯Ό μ˜μ‘΄ν•˜κ³  μžˆλ‹€.

 

νšŒμ› μ»¨νŠΈλ‘€λŸ¬κ°€ νšŒμ› μ„œλΉ„μŠ€μ™€ νšŒμ› 리포지토리λ₯Ό μ‚¬μš©ν•  수 있게 μ˜μ‘΄κ΄€κ³„λ₯Ό μ„€μ •ν•΄λ³΄μž.

 

μŠ€ν”„λ§ λΉˆμ„ λ“±λ‘ν•˜κ³  μ˜μ‘΄κ΄€κ³„λ₯Ό μ„€μ •ν•˜λŠ” 2κ°€μ§€ 방법

  • μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”κ³Ό μžλ™ μ˜μ‘΄κ΄€κ³„ μ„€μ •
  • μžλ°” μ½”λ“œλ‘œ 직접 μŠ€ν”„λ§ 빈 λ“±λ‘ν•˜κΈ°

 

μŠ€ν”„λ§ 빈(Spring Bean)

  • Spring IOC μ»¨ν…Œμ΄λ„ˆκ°€ κ΄€λ¦¬ν•˜λŠ” μžλ°” 객체λ₯Ό λ§ν•œλ‹€.
  • IoC(Inversion of Control, μ œμ–΄μ˜ μ—­μ „): ν”„λ‘œκ·Έλž¨μ˜ 흐름을 κ°œλ°œμžκ°€ μ•„λ‹Œ ν”„λ ˆμž„μ›Œν¬κ°€ μ£Όλ„ν•˜κ²Œ λœλ‹€. 객체의 μƒμ„±μ—μ„œ μ†Œλ©ΈκΉŒμ§€ ν”„λ ˆμž„μ›Œν¬κ°€ κ΄€λ¦¬ν•œλ‹€.

 

1. μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”κ³Ό μžλ™ μ˜μ‘΄κ΄€κ³„ μ„€μ •

1) μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ

  • μŠ€ν”„λ§μ΄ μ²˜μŒμ— 뜰 λ•Œ 빈 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆκ°€ μƒμ„±λ˜λŠ”λ°, κ·Έ μ•ˆμ— @Component μ–΄λ…Έν…Œμ΄μ…˜μ΄ μžˆλŠ” 객체λ₯Ό μŠ€ν”„λ§ 빈으둜 λ“±λ‘ν•˜μ—¬ 생성 및 κ΄€λ¦¬ν•œλ‹€. μ΄λŸ¬ν•œ 방식을 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μŠ€ν”„λ§ 빈이 κ΄€λ¦¬λœλ‹€κ³  ν‘œν˜„ν•œλ‹€.
  • μŠ€ν”„λ§ λΉˆμ€ λŒ€λΆ€λΆ„ μ‹±κΈ€ν†€μœΌλ‘œ λ“±λ‘λœλ‹€. λ”°λΌμ„œ 같은 μŠ€ν”„λ§ 빈이면 λͺ¨λ‘ λ™μΌν•œ μΈμŠ€ν„΄μŠ€μ΄λ‹€.
  • μŠ€ν”„λ§ λΉˆμ€ μŠ€ν”„λ§κ³Ό κ΄€λ ¨λœ κΈ°λŠ₯을 μˆ˜ν–‰ν•  수 μžˆλ‹€.
  • @Controller, @Service, @RepositoryλŠ” λͺ¨λ‘ @Componentλ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ–΄ μŠ€ν”„λ§ 빈으둜 μžλ™ λ“±λ‘λœλ‹€.
  • μ‹€ν–‰ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(@SpringBootApplication)의 ν•˜μœ„ νŒ¨ν‚€μ§€μ— λ“±λ‘λœ κ°μ²΄μ—μ„œλ§Œ μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”μ„ μˆ˜ν–‰ν•œλ‹€.

 

2) μžλ™ μ˜μ‘΄κ΄€κ³„ μ„€μ •

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ μ•ˆ λ“±λ‘λœ μŠ€ν”„λ§ 빈

  • μƒμ„±μžμ— @Autowired μ–΄λ…Έν…Œμ΄μ…˜μ΄ 있으면, 객체 생성 μ‹œμ μ— μŠ€ν”„λ§μ΄ μ—°κ΄€λœ 객체λ₯Ό μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ°Ύμ•„μ„œ λ„£μ–΄μ€€λ‹€. (μƒμ„±μžκ°€ 1개라면 μƒλž΅ κ°€λŠ₯)
  • 객체 μ˜μ‘΄κ΄€κ³„λ₯Ό μ™ΈλΆ€μ—μ„œ λ„£μ–΄μ£ΌλŠ” 것을 DI(Dependency Injection, μ˜μ‘΄μ„± μ£Όμž…)라 ν•œλ‹€.
  • 이 κ΅¬μ‘°λŠ” μ»¨νŠΈλ‘€λŸ¬μ—μ„œ μ™ΈλΆ€ μš”μ²­μ„ λ°›κ³  μ„œλΉ„μŠ€μ—μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ§Œλ“€κ³  λ¦¬ν¬μ§€ν† λ¦¬μ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” μ •ν˜•ν™”λœ νŒ¨ν„΄μ΄λ‹€.
package hello.hello.spring.controller;

import hello.hello.spring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class MemberController {

    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService){
        this.memberService = memberService;
    }
}

 

@Service
public class MemberService {

    private final MemberRepository memberRepository;
    
    @Autowired
    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }
}

 

@Repository
public class MemoryMemberRepository implements MemberRepository {}
μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Language/✏ JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Spring][혼곡] 5. μ›Ή MVC 개발 - νšŒμ› μ›Ή κΈ°λŠ₯
  • [Spring][혼곡] 4. μŠ€ν”„λ§ 빈과 μ˜μ‘΄κ΄€κ³„ - (2) 직접 μŠ€ν”„λ§ 빈 λ“±λ‘ν•˜κΈ°
  • [Spring][혼곡] 4. νšŒμ› 관리 예제 - (4) νšŒμ› μ„œλΉ„μŠ€ 개발
  • [Spring][혼곡] 4. νšŒμ› 관리 예제 - (3) ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μž‘μ„±
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[Spring][혼곡] 4. μŠ€ν”„λ§ 빈과 μ˜μ‘΄κ΄€κ³„ - (1) μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”κ³Ό μžλ™ μ˜μ‘΄κ΄€κ³„ μ„€μ •
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”