[μ΄νν°λΈ μλ°] Item01 μ벽곡λ΅. μλΉμ€ μ 곡μ νλ μμν¬
item01. μμ±μ λμ μ μ ν©ν°λ¦¬ λ©μλλ₯Ό κ³ λ €νλΌ.
"p11. μλΉμ€ μ 곡μ νλ μμν¬λ₯Ό λ§λλ κ·Όκ°μ΄ λλ€."
μλΉμ€ μ 곡μ νλ μμν¬λ?
: λ€μν μλΉμ€ μ 곡μλ€μ΄ νλμ μλΉμ€λ₯Ό ꡬμ±νλ μμ€ν μΌλ‘ ν΄λΌμ΄μΈνΈλ μΈλΆμ μΈ κ΅¬ν λ΄μ©μ λͺ¨λ₯΄λλΌλ μλΉμ€λ₯Ό μ΄μ©ν μ μλ€.
ex) mysql, oracle λ±μ μλΉμ€ μ 곡μλ€μ΄ λͺ¨μ¬ JDBCλΌλ νλμ μλΉμ€λ₯Ό ꡬμ±ν¨.
-> νμ₯ κ°λ₯ν μ ν리μΌμ΄μ μ λ§λλ λ°©λ²
μλΉμ€ μ 곡μ νλ μμν¬ μ£Όμ κ΅¬μ± μμ
- μλΉμ€ μ 곡μ μΈν°νμ΄μ€(SPI) μ μλΉμ€ μ 곡μ (μλΉμ€ ꡬν체)
- μλΉμ€ μ 곡μ λ±λ‘ API (μλΉμ€ μΈν°νμ΄μ€μ ꡬν체λ₯Ό λ±λ‘νλ λ°©λ²)
- μλΉμ€ μ κ·Ό API (μλΉμ€μ ν΄λΌμ΄μΈνΈκ° μλΉμ€ μΈν°νμ΄μ€μ μΈμ€ν΄μ€λ₯Ό κ°μ Έμ¬ λ μ¬μ©νλ API)
μλΉμ€ μ 곡μ νλ μμν¬μ λ€μν λ³ν
- λΈλ¦Ώμ§ ν¨ν΄
: λΈλ¦Ώμ§ ν¨ν΄μ ν° ν΄λμ€ λλ λ°μ νκ² κ΄λ ¨λ ν΄λμ€λ€μ μ§ν©μ λκ°μ κ°λ³ κ³μΈ΅ κ΅¬μ‘°λ‘ λλ ν κ°κ° λ 립μ μΌλ‘ κ°λ°ν μ μλλ‘ νλ λμμΈ ν¨ν΄μ΄λ€.
-> κ°μ²΄μ ν₯μμ±μ ν₯μνκΈ° μν ν¨ν΄μΌλ‘, κ°μ²΄μμ λμμ μ²λ¦¬νλ ꡬνλΆμ νμ₯μ μν μΆμλΆλ₯Ό λΆλ¦¬ν ν¨ν΄μ΄λ€.
λΈλ¦¬μ§ ν¨ν΄μ κΈ°μ‘΄ μμ€ν μ λΆμμ μΈ μλ‘μ΄ κΈ°λ₯μ μ§μμ μΌλ‘ μΆκ°ν λ μ¬μ©νλ©΄ μ μ©νλ€.
μλ‘μ΄ μΈν°νμ΄μ€λ₯Ό μ μν΄μ κΈ°μ‘΄ νλ‘κ·Έλ¨μ λ³κ²½μμ΄ νμ₯ν μ μλ€.
- μμ‘΄ κ°μ²΄ μ£Όμ νλ μμν¬ (spring)
: μ€νλ§μΌλ‘ μλΉμ€ μ 곡μ νλ μμν¬λ₯Ό μκ°ν΄λ³΄λ©΄ μλΉμ€λ₯Ό μ 곡ν μΈν°νμ΄μ€λ₯Ό λ§λ€κ³ , μ΄ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€ μ¦, μλΉμ€ μ 곡μκ° μλ€. κ·Έλ¦¬κ³ μ΄λ₯Ό λ±λ‘ν λλ @Bean λ₯Ό ν΅ν΄ μλΉμ€ μ 곡μλ₯Ό λ±λ‘νκ³ , μ΄μ μλΉμ€λ₯Ό μ κ·Όν λλ @Autowiredλ₯Ό ν΅ν΄ μμ‘΄μ±μ μ£Όμ ν΄μ μ¬μ©νλ©΄ λλ€.
- ServiceLoader
: μλΉμ€ λ‘λλ java.util ν¨ν€μ§ μμ μλ κ²μΌλ‘, μλΉμ€ λ‘λλ μ£Όλ‘ μ ν리μΌμ΄μ λ΄λΆμμ νλ¬κ·ΈμΈμ μ 곡ν λ μ¬μ©νλλ°, νΉμ κΈ°λ₯μ μ 곡νκΈ° μν μΈν°νμ΄μ€κ° μκ³ , λ€μν λ²€λ νμ¬λ€μ΄ μ΄ μΈν°νμ΄μ€λ₯Ό κΈ°λ°μΌλ‘ μμ λ€λ§μ ꡬ체 μλΉμ€λ₯Ό ꡬννκ² λλ€.
λ°λΌμ μ¬μ©μλ μ΄λ€ λ²€λ νμ¬κ° λ§λ ꡬ체 μλΉμ€μ μκ΄ μμ΄ κ³΅ν΅ μΈν°νμ΄μ€λ§ κ°μ§κ³ μμΌλ©΄, κ° λ²€λνμ¬λ§μ μλΉμ€ μ₯λ¨μ μ κ³ λ €ν΄μ μνλ ꡬν체λ₯Ό 골λΌμ μ¬μ©νλ©΄ λλ€.
-> μ¦ ,serviceLoader ν΄λμ€λ₯Ό μ¬μ©νλ©΄, κ·Έ ꡬν체 jar νμΌμ λ°κΏλΌλ κ²λ§μΌλ‘ λ΄κ° μνλ μ μ ν ꡬν체λ₯Ό μ¬μ©νλλ‘ λ°κΏ μ μλ€.