π[Backend Development] Springμμμ μ»΄ν¬λνΈλ?
Springμμ μμ£Ό μ°μ΄λ μ»΄ν¬λνΈ(Component) κ°λ μ μ 리ν΄λ΄ μλ€. π
β 1. μ»΄ν¬λνΈλ 무μμΈκ°μ?
- Springμμ κ΄λ¦¬νλ κ°μ²΄(Bean) λ₯Ό μλ―Έν©λλ€.
-
@Component
μ λ Έν μ΄μ μ λΆν°λ©΄ ν΄λΉ ν΄λμ€λ Spring 컨ν μ΄λκ° μλμΌλ‘ νμ(μ»΄ν¬λνΈ μ€μΊ)νμ¬ BeanμΌλ‘ λ±λ‘ν©λλ€. - μ¦, κ°λ°μκ° μ§μ
@Bean
μΌλ‘ λ±λ‘νμ§ μμλ Springμ΄ μλμΌλ‘ κ°μ²΄λ₯Ό μμ±νκ³ κ΄λ¦¬ν©λλ€.
@Component
public class MyService {
public void doSomething() {
System.out.println("Service logic!");
}
}
β 2. μ»΄ν¬λνΈμ μν μ 무μμΈκ°μ?
-
μλ λ±λ‘ : ν΄λμ€μ
@Component
λ₯Ό λΆμ΄λ©΄ μ€νλ§μ΄ μλμΌλ‘ κ°μ²΄λ₯Ό μμ±νκ³ , μμ‘΄μ±μ μ£Όμ ν μ μλλ‘ κ΄λ¦¬ν©λλ€. -
μμ‘΄μ± μ£Όμ
(DI) : λ±λ‘λ μ»΄ν¬λνΈλ λ€λ₯Έ ν΄λμ€μ
@Autowired
λλ μμ±μ μ£Όμ μΌλ‘ μ½κ² μ¬μ©ν μ μμ΅λλ€. -
μ ν리μΌμ΄μ
κ΅¬μ± μμ κ΅¬λΆ :
@Service
,@Repository
,@Controller
λ±μ λͺ¨λ@Component
μ νΉνλ λ²μ μ λλ€. μν λ³λ‘ ꡬλΆνκΈ° μ’κ² λμμ€λλ€.
β 3. μ»΄ν¬λνΈλ μΈμ μ¬μ©νλμ?
- μΌλ°μ μΈ μ ν리μΌμ΄μ λ‘μ§ ν΄λμ€λ₯Ό BeanμΌλ‘ λ±λ‘νκ³ μΆμ λ μ¬μ©ν©λλ€.
- μλ λ±λ‘μ΄ κ°λ₯ν κ²½μ° μ¬μ©ν©λλ€.(Springμ΄ μ§μ μμ±ν μ μλ ν΄λμ€)
- μ£Όμ μ¬λ‘:
-
- μλΉμ€ ν΄λμ€(@Service) : λΉμ¦λμ€ λ‘μ§ λ΄λΉ
-
- 리ν¬μ§ν 리 ν΄λμ€(@Repository) : DB μ κ·Ό λ΄λΉ
-
- 컨νΈλ‘€λ¬ ν΄λμ€(@Controller, @RestController) : API/νλ©΄ λ΄λΉ
-
μ μ λ Έν μ΄μ λ€μ λͺ¨λ λ΄λΆμ μΌλ‘ @Componentλ₯Ό ν¬ν¨νκ³ μμ΄μ μλ λ±λ‘λ©λλ€.
-
π μμ½
μ§λ¬Έ | μμ½ λ΅λ³ |
---|---|
μ»΄ν¬λνΈλ? | Springμ΄ μλμΌλ‘ BeanμΌλ‘ λ±λ‘νλ ν΄λμ€ |
μν μ? | κ°μ²΄λ₯Ό μλ μμ± λ° κ΄λ¦¬νκ³ DIλ₯Ό μ§μ |
μΈμ μ¬μ©νλμ? | μλΉμ€, 리ν¬μ§ν 리, 컨νΈλ‘€λ¬ λ± μλ λ±λ‘ κ°λ₯ν ν΄λμ€μΌ λ |
π μΆκ°λ‘ μμλλ©΄ μ’μ μ
- @Componentλ μλ λ±λ‘, @Beanμ μλ λ±λ‘μ΄λΌλ μ°¨μ΄κ° μμ΅λλ€.
- μλ λ±λ‘μ΄ λΆκ°λ₯ν μΈλΆ λΌμ΄λΈλ¬λ¦¬λ 볡μ‘ν μμ± λ‘μ§μ΄ μμΌλ©΄ @Beanμ μ°κ³ , μΌλ°μ μΈ μ ν리μΌμ΄μ ν΄λμ€λΌλ©΄ @Componentλ₯Ό μ°λ κ²μ΄ κΈ°λ³Έμ λλ€.