πŸΌλ°±μ•€λ“œ/Spring

μ˜μ‘΄κ΄€κ³„ μžλ™ μ£Όμž…

κ³„λž€μ†Œλ…„ 2023. 12. 19. 19:43

μ˜μ‘΄κ΄€κ³„ μ£Όμž… λ°©λ²•μ—λŠ” 4가지가 μžˆλ‹€.

μƒμ„±μž μ£Όμž…

μˆ˜μ •μž μ£Όμž…(setter μ£Όμž…)

ν•„λ“œ μ£Όμž…

일반 λ©”μ„œλ“œ μ£Όμž…

 

1. μƒμ„±μž μ£Όμž…

μƒμ„±μžλ₯Ό 톡해 의쑴 관계λ₯Ό μ£Όμž…ν•˜λŠ” 방법

μƒμ„±μž ν˜ΈμΆœμ‹œμ μ— λ”± 1번만 ν˜ΈμΆœλ˜λŠ” 것이 보μž₯되고, λΆˆλ³€,ν•„μˆ˜ μ˜μ‘΄κ΄€κ³„μ— μ‚¬μš©λœλ‹€.

 

2.μˆ˜μ •μžμ£Όμž…

setter라 λΆˆλ¦¬λŠ” ν•„λ“œ 값을 λ³€κ²½ν•˜λŠ” μˆ˜μ •μž λ©”μ„œλ“œλ₯Ό 톡해 μ˜μ‘΄κ΄€κ³„ μ£Όμž…ν•˜λŠ” 방법

선택, λ³€κ²½ κ°€λŠ₯성이 μžˆλŠ”μ˜μ‘΄κ΄€κ³„μ— μ‚¬μš©

 

3. ν•„λ“œμ£Όμž…

ν•„λ“œμ— λ°”λ‘œ μ£Όμž…ν•˜λŠ” 방법

μ½”λ“œκ°€ κ°„κ²°ν•˜μ§€λ§Œ μ™ΈλΆ€μ—μ„œ 변경이 λΆˆκ°€λŠ₯ν•΄ ν…ŒμŠ€νŠΈ ν•˜κΈ°κ°€ νž˜λ“€λ‹€

 

4. μΌλ°˜λ©”μ„œλ“œμ£Όμž…

ν•œλ²ˆμ— μ—¬λŸ¬ ν•„λ“œλ₯Ό μ£Όμž… 받을 수 μžˆμœΌλ‚˜, 잘 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

@Service

public class UserService {


    private UserRepository userRepository;
    private MemberService memberService;

    @Autowired

    public UserService(UserRepository userRepository, MemberService memberService) {
        this.userRepository = userRepository;
        this.memberService = memberService;
    }
    
}

μš°λ¦¬λŠ” μƒμ„±μž μ£Όμž…μ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. μ΄μœ λŠ” 크게 λΆˆλ³€κ³Ό λˆ„λ½, finalν‚€μ›Œλ“œκ°€ μžˆλ‹€.

λΆˆλ³€

λŒ€λΆ€λΆ„μ˜ μ˜μ‘΄κ΄€κ³„ μ£Όμž…μ€ ν•œλ²ˆ λ°œμƒν•˜λ©΄ λ³€κ²½ν•  일이 μ—†λ‹€. μƒμ„±μž μ£Όμž…μ€ 객체λ₯Ό 생성할 λ•Œ λ”± ν•œλ²ˆλ§Œ ν˜ΈμΆœλ˜λ―€λ‘œ 이후에 ν˜ΈμΆœλ˜λŠ” 일이 없기에 μ μ ˆν•˜λ‹€.

λˆ„λ½

μƒμ„±μž μ£Όμž…μ„ μ‚¬μš©ν•˜λ©΄ μ£Όμž… 데이터λ₯Ό λˆ„λ½ ν–ˆμ„ λ•Œ 컴파일 였λ₯˜κ°€ λ°œμƒν•˜κ³ , μ–΄λ–€ 값을 ν•„μˆ˜λ‘œ μ£Όμž…ν•΄μ•Ό ν•˜λŠ”μ§€ μ•Œ 수 μžˆλ‹€.

finalν‚€μ›Œλ“œ

μƒμ„±μž μ£Όμž… μ‚¬μš©μ‹œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš© κ°€λŠ₯ν•œλ°, 이λ₯Ό 톡해 값이 μ„€μ •λ˜μ§€ μ•ŠλŠ” 였λ₯˜λ₯Ό 컴파일 μ‹œμ μ— 막아쀀닀.

λ‚˜λ¨Έμ§€ μ£Όμž… 방식은 λͺ¨λ‘ μƒμ„±μž 이후에 ν˜ΈμΆœλ˜λ―€λ‘œ, ν•„λ“œμ— final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.

 

즉, μƒμ„±μž μ£Όμž… 방식을 μ‚¬μš©ν•˜λ©΄ ν”„λ ˆμž„μ›Œν¬μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³ , μžλ°”μ˜ νŠΉμ§•μ„ 잘 살릴 수 μžˆλ‹€.

μƒμ„±μž μ£Όμž…μ„ λ©”μΈμœΌλ‘œν•΄μ„œ ν•„μš”ν•œ κ²½μš° μ˜΅μ…˜μœΌλ‘œ μˆ˜μ •μž μ£Όμž…μ„ μ„ νƒν•˜λŠ” 방법을 μ‚¬μš©ν•˜μž.