[Spring] μμ‘΄μ± μ£Όμ (DI)
μμ‘΄μ± μ£Όμ λ°©λ²
1) Constructor (μμ±μ) κΆμ₯
public class Test {
private final LoginService loginService;
private final BoardService boardService;
@Autowired
public Test(LoginService loginService, BoardService boardService) {
this.loginService = loginService;
this.boardService = boardService;
}
}
- νμμ μΈ μμ‘΄μ± μ£Όμ μ μ μ©νλ€.
- finalμ μ μΈν μ μμΌλ―λ‘ κ°μ²΄κ° λΆλ³μ΄λ€.
- ν μ€νΈμ½λ μμ±μ μ©μ΄νλ€.
2) Setter
public class Test {
private LoginService loginService;
private BoardService boardService;
@Autowired
public void setLoginService (LoginService loginService) {
this.loginService = loginService;
}
@Autowired
public void setBoardService (BoardService boardService) {
this.boardService = boardService;
}
}
- μν©μ λ°λΌ μμ‘΄μ± μ£Όμ μ΄ κ°λ₯νλ€.
3) Field
public class Test {
@Autowired
private LoginService loginService;
@Autowired
private BoardService boardSerivce;
}
- finalμ μ μΈν μ μλ€. λ°λΌμ κ°μ²΄κ° λ³ν μ μλ€.
μμ±μ μ£Όμ λ°©λ²μ κΆμ₯νλ μ΄μ
1) μν μ°Έμ‘°λ₯Ό λ°©μ§νλ€.
- setterμ£Όμ λ°©λ²μ μ£Όμ λ°μΌλ €λ λΉμ μμ±μλ₯Ό νΈμΆνμ¬ λΉμ μ°Ύκ±°λ λΉ ν©ν 리μ λ±λ‘νλ€. κ·Έ νμ μμ±μ μΈμμ μ¬μ©νλ λΉμ μ°Ύκ±°λ λ§λ λ€. κ·Έ ν μ£Όμ νλ €λ λΉ κ°μ²΄μ μμ μλ₯Ό νΈμΆν΄ μ£Όμ νλ€.
- field μ£Όμ μ setter μ£Όμ λ°©μκ³Ό λμΌνλ€. λ¨Όμ λΉμ μμ±ν νμ νλμ λν΄μ μ£Όμ νλ€.
- μμ±μ μ£Όμ μ μμ±μλ‘ κ°μ²΄λ₯Ό μμ±νλ μμ μ νμν λΉμ μ£Όμ νλ€. μμ±μμ μΈμμ μ¬μ©λλ λΉμ μ°Ύκ±°λ λΉ ν©ν 리μμ λ§λ λ€. κ·Έ νμ μ°Ύμ μΈμ λΉμΌλ‘ μ£Όμ νλ €λ λΉμ μμ±μλ₯Ό νΈμΆνλ€. μ¦, λ¨Όμ λΉμ μμ±νμ§ μλ κ²μ΄λ€.
κ°μ²΄ μμ± μμ μ λΉμ μ£Όμ νκΈ° λλ¬Έμ μλ‘ μ°Έμ‘°νλ κ°μ²΄κ° μμ±λμ§ μμ μνμμ λΉμ μ°Έμ‘°ν λ μν μ°Έμ‘° μ€λ₯κ° λ°μνλ€. λ°λΌμ μν μ°Έμ‘°λλ μ€κ³λ₯Ό μ¬μ μ λ§κΈ° μν΄ μμ±μ μ£Όμ λ°©μμ μ΄λ€.
2) ν μ€νΈμ μ©μ΄νλ€.
- ν μ€νΈ μ½λλ₯Ό μ’ λ νΈλ¦¬νκ² μμ±ν μ μλ€.
3) λΆλ³μ±
- νλλ₯Ό finalλ‘ μ μΈν μ μλ€.