π[Spring] @Primary
μ΄λ
Έν
μ΄μ
@Primary
μ΄λ
Έν
μ΄μ
μ Spring Frameworkμμ λΉμ μ°μ μμλ₯Ό μ§μ ν λ μ¬μ©νλ μ΄λ
Έν
μ΄μ
μ
λλ€.
λ§μ½ μ¬λ¬ κ°μ λΉμ΄ λμΌν νμ
μΌλ‘ λ±λ‘λμ΄ μμ λ, μ΄λ€ λΉμ μ£Όμ
ν μ§ λͺ
μμ μΌλ‘ μ§μ νμ§ μμΌλ©΄ Springμ μλμΌλ‘ @Primary
κ° λΆμ λΉμ μ°μ μ μΌλ‘ μ£Όμ
νκ² λ©λλ€.
μ΄λ₯Ό ν΅ν΄ λ€μμ ꡬνμ²΄κ° μμ κ²½μ° κΈ°λ³Έμ μΌλ‘ μ¬μ©λ λΉμ μ€μ ν μ μμ΅λλ€.
1οΈβ£ @Primary
μ λμ λ°©μ.
- Spring μ κ°μ νμ μ λΉμ΄ μ¬λ¬ κ° μ‘΄μ¬ν λ μμ‘΄μ± μ£Όμ μ μ΄λ λΉμ μ¬μ©ν μ§ κ²°μ ν΄μΌ ν©λλ€.
- κΈ°λ³Έμ μΌλ‘ νμ μ λ§λ λΉμ μλμΌλ‘ μ£Όμ νλ € νμ§λ§, κ°μ νμ μ λΉμ΄ λ κ° μ΄μ λ±λ‘λμ΄ μλ€λ©΄ λͺ¨νΈμ±μ΄ λ°μν μ μμ΅λλ€.
- μ΄λ
@Primary
λ₯Ό μ¬μ©νλ©΄ ν΄λΉ λΉμ κΈ°λ³Έμ μΌλ‘ μ£Όμ ν λΉμΌλ‘ μ€μ ν μ μμ΅λλ€.
μμ
@Component
public class FirstService implement MyService {
// FirstService ꡬν
}
@Component
@Primary
public class SecondService implements MyService {
// SecondService ꡬν
}
- μ μμμμ
FirstService
μSecondService
κ° λͺ¨λMyService
νμ μ λΉμΌλ‘ λ±λ‘λμ΄ μμ΅λλ€. -
SecondService
μλ@Primary
μ΄λ Έν μ΄μ μ΄ λΆμ΄ μμΌλ―λ‘,MyService
νμ μ λΉμ΄ νμν λ Springμ μλμΌλ‘SecondService
λ₯Ό μ£Όμ νκ² λ©λλ€.
@Service
public class MyClient {
private final MyService myService;
@Autowired
public MyClient(MyService myService) {
this.myService = myService;
}
// MyClientλ SecondService λΉμ μ£Όμ
λ°κ² λ©λλ€.
}
2οΈβ£ @Primary
μ @Qualifier
μ μ°¨μ΄.
-
@Priamry
λ κΈ°λ³Έ λΉμ μ§μ ν λ μ¬μ©λμ§λ§, λ ꡬ체μ μΈ λΉμ μ£Όμ ν΄μΌ ν λλ@Qualifier
μ΄λ Έν μ΄μ μ μ¬μ©ν μ μμ΅λλ€. -
@Qualifier
λ νΉμ μ΄λ¦μ κ°μ§ λΉμ λͺ μμ μΌλ‘ μ§μ νμ¬ μ£Όμ ν μ μλλ‘ λμμ€λλ€.
@Qualifier
μμ
@Component
@Qualifier("firstService")
public class FirstService implement MyService {
// FirstService ꡬν
}
@Component
@Qualifier("secondService")
@Primary
public class SecondService implement MyService {
// SecondService ꡬν
}
@Service
public class MyClient {
private final MyService myService;
@Autowired
public MyClient(@Qualifier("firstService") MyService myService) {
this.myService = myService;
}
// MyClientλ FirstService λΉμ μ£Όμ
λ°κ² λ©λλ€.
}
- μ΄ κ²½μ°,
@Primary
κ°SecondService
μ μ§μ λμ΄ μμ΄λ@Qualifier("firstService")
κ° μ§μ λ κ²½μ°μλFirstService
κ° μ£Όμ λ©λλ€.
3οΈβ£ κ²°λ‘ .
-
@Primary
λ λμΌν νμ μ λΉμ΄ μ¬λ¬ κ° λ±λ‘λ κ²½μ°, κΈ°λ³Έμ μΌλ‘ μ¬μ©λ λΉμ μ§μ νλ μ΄λ Έν μ΄μ μ λλ€. - μ΄ μ΄λ
Έν
μ΄μ
μ μ¬μ©νλ©΄ κ°μ νμ
μ λΉμ΄ μ¬λ¬ κ° μμ λ, λͺ
μμ μΌλ‘ μ§μ νμ§ μμΌλ©΄ Springμ
@Primary
κ° λΆμ λΉμ μ°μ μ μΌλ‘ μ νν΄ μ£Όμ ν©λλ€. - λ³΄λ€ κ΅¬μ²΄μ μΌλ‘ μ΄λ€ λΉμ μ£Όμ
ν μ§ λͺ
μν νμν μμ λλ
@Qualifier
λ₯Ό ν¨κ» μ¬μ©ν μ μμ΅λλ€.