ν΄λΉ ν¬μ€ν μ κΉμνλμ μΈνλ° κ°μ(μ€νλ§ ν΅μ¬ μ리 - κΈ°λ³ΈνΈ)λ₯Ό λ£κ³ μ 리ν λ΄μ©μ λλ€.
μ€νλ§μ νμ
EJB (Enterprise Java Beans)
- 2000λ λ μ΄λ°, μλ° μ§μμ νμ€μΌλ‘ μ¬μ©λλ κΈ°μ
- νΈλμμ μ€μ , λΆμ°κΈ°μ λ± μ΄λ‘ μμΌλ‘ μ’μ μ λ€μ΄ μμμ§λ§, 볡μ‘νκ³ EJBμ μμ‘΄μ μΈ μ½λλ₯Ό μμ±ν΄μΌνλ λ± μ₯μ μ λμ΄μλ λ€μν λ¬Έμ μ μ΄ μμμ
2002λ λ‘λ μ‘΄μ¨ μ± μΆκ°
- EJBμ λ¬Έμ μ μ μ§μ νλ©°, EJB μμ΄λ μΆ©λΆν κ³ νμ§μ νμ₯ κ°λ₯ν μ ν리μΌμ΄μ μ κ°λ°ν μ μμμ 보μ¬μ£Όκ³ , 30,000λΌμΈ μ΄μμ κΈ°λ° κΈ°μ μ μμ μ½λλ‘ μ 보μ
- μ± μΆκ° μ§ν μ κ² ν λ¬μ μ μΉ΄λ‘νκ° λ‘λ μ‘΄μ¨μκ² μ€νμμ€ νλ‘μ νΈλ₯Ό μ μ
- μ ν΅μ μΈ J2EE(EJB)λΌλ 겨μΈμ λμ΄ μλ‘μ΄ μμμ΄λΌλ λ»μΌλ‘ μ€νλ§μ΄λΌλ μ΄λ¦μ λΆμ
μ€νλ§ μμ¬
- 2003λ , μ€νλ§ νλ μμν¬ 1.0 μΆμ - XML
- 2006λ , μ€νλ§ νλ μμν¬ 2.0 μΆμ - XML νΈμ κΈ°λ₯ μ§μ
- 2009λ , μ€νλ§ νλ μμν¬ 3.0 μΆμ - μλ° μ½λλ‘ μ€μ
- 2013λ , μ€νλ§ νλ μμν¬ 4.0 μΆμ - μλ°8
- 2014λ , μ€νλ§ λΆνΈ 1.0 μΆμ
- 2017λ , μ€νλ§ νλ μμν¬ 5.0, μ€νλ§ λΆνΈ 2.0 μΆμ - 리μν°λΈ νλ‘κ·Έλλ° μ§μ
μ€νλ§μ΄λ
μ€νλ§μ μ’μ κ°μ²΄ μ§ν₯ μ ν리μΌμ΄μ μ κ°λ°ν μ μκ² λμμ£Όλ νλ μμν¬μ΄λ€.
μ€νλ§ μνκ³
μ€νλ§ νλ μμν¬
- ν΅μ¬ κΈ°μ : μ€νλ§ DI 컨ν μ΄λ, AOP, μ΄λ²€νΈ, κΈ°ν
- μΉ κΈ°μ : μ€νλ§ MVC, μ€νλ§ WebFlux
- λ°μ΄ν° μ κ·Ό κΈ°μ : νΈλμμ , JDBC, ORM μ§μ, XML μ§μ
- κΈ°μ ν΅ν©: μΊμ, μ΄λ©μΌ, μ격μ κ·Ό, μ€μΌμ€λ§
- ν μ€νΈ: μ€νλ§ κΈ°λ° ν μ€νΈ μ§μ
- μΈμ΄: μ½νλ¦°, 그루λΉ
- μ΅κ·Όμλ μ€νλ§ λΆνΈλ₯Ό ν΅ν΄μ μ€νλ§ νλ μμν¬μ κΈ°μ λ€μ νΈλ¦¬νκ² μ¬μ©
μ€νλ§λΆνΈ
- μ€νλ§μ νΈλ¦¬νκ² μ¬μ©ν μ μλλ‘ μ§μ, μ΅κ·Όμλ κΈ°λ³ΈμΌλ‘ μ¬μ©
- λ¨λ μΌλ‘ μ€νν μ μλ μ€νλ§ μ ν리μΌμ΄μ μ μ½κ² μμ±
- Tomcat κ°μ μΉ μλ²λ₯Ό λ΄μ₯ν΄μ λ³λμ μΉ μλ²λ₯Ό μ€μΉνμ§ μμλ λ¨
- μμ¬μ΄ λΉλ ꡬμ±μ μν starter μ’ μμ± μ 곡
- μ€νλ§κ³Ό 3rd party λΌμ΄λΈλ¬λ¦¬ μλ ꡬμ±
- μΈλΆ λΌμ΄λΈλ¬λ¦¬ λ²μ μ λν΄μ κ³ λ―Όν νμκ° μμ
- λ©νΈλ¦, μν νμΈ, μΈλΆ κ΅¬μ± κ°μ νλ‘λμ μ€λΉ κΈ°λ₯ μ 곡
- κ΄λ‘μ μν κ°κ²°ν μ€μ
μ’μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ?
μν κ³Ό ꡬνμ λΆλ¦¬
- μλ° μΈμ΄μ λ€νμ±μ νμ©
- μν = μΈν°νμ΄μ€
- ꡬν = μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€, ꡬν κ°μ²΄
- κ°μ²΄λ₯Ό μ€κ³ν λ μν κ³Ό ꡬνμ λͺ νν λΆλ¦¬
- κ°μ²΄ μ€κ³μ μν μ λ¨Όμ λΆμ¬νκ³ , κ·Έ μν μ μννλ ꡬν κ°μ²΄ λ§λ€κΈ°
- ꡬνλ³΄λ€ μν μ΄ μ€μ
κ°μ²΄μ νλ ₯μ΄λΌλ κ΄κ³λΆν° μκ°
- νΌμ μλ κ°μ²΄λ μλ€.
- μ λ§μ κ°μ²΄ ν΄λΌμ΄μΈνΈμ κ°μ²΄ μλ²λ μλ‘ νλ ₯ κ΄κ³λ₯Ό κ°μ§λ€.
λ€νμ±μ λ³Έμ§
- μΈν°νμ΄μ€λ₯Ό ꡬνν κ°μ²΄ μΈμ€ν΄μ€λ₯Ό μ€ν μμ μ μ μ°νκ² λ³κ²°ν μ μλ€.
- ν΄λΌμ΄μΈνΈλ₯Ό λ³κ²½νμ§ μκ³ , μλ²μ ꡬν κΈ°λ₯μ μ μ°νκ² λ³κ²½ν μ μλ€.
μ€νλ§κ³Ό κ°μ²΄ μ§ν₯
- λ€νμ±μ΄ κ°μ₯ μ€μνλ€!
- μ€νλ§μ λ€νμ±μ κ·Ήλνν΄μ μ΄μ©ν μ μκ² λμμ€λ€.
- μ€νλ§μμ μ΄μΌκΈ°νλ IoC, DIλ λ€νμ±μ νμ©ν΄μ μν κ³Ό ꡬνμ νΈλ¦¬νκ² λ€λ£° μ μλλ‘ μ§μνλ€.
μ’μ κ°μ²΄ μ§ν₯ μ€κ³μ 5κ°μ§ μμΉ (SOLID)
ν΄λ¦°μ½λλ‘ μ λͺ ν λ‘λ²νΈ λ§ν΄μ΄ μ’μ κ°μ²΄ μ§ν₯ μ€κ³μ 5κ°μ§ μμΉμ μ 리
SRP λ¨μΌ μ± μ μμΉ
- ν ν΄λμ€λ νλμ μ± μλ§ κ°μ ΈμΌ νλ€.
- νλμ μ±
μμ΄λΌλ κ²μ λͺ¨νΈνλ€.
- ν΄ μ μκ³ , μμ μ μλ€.
- λ¬Έλ§₯κ³Ό μν©μ λ°λΌ λ€λ₯΄λ€.
- μ€μν κΈ°μ€μ λ³κ²½μ΄λ€.
- λ³κ²½μ΄ μμ λ νκΈ ν¨κ³Όκ° μ μΌλ©΄ λ¨μΌ μ± μ μμΉμ μ λ°λ₯Έ κ²μ΄λ€.
OCP κ°λ°©-νμ μμΉ
- μννΈμ¨μ΄ μμλ νμ₯μλ μ΄λ €μμΌλ λ³κ²½μλ λ«ν μμ΄μΌ νλ€.
- λ¬Έμ μ
- ꡬν κ°μ²΄λ₯Ό λ³κ²½νλ €λ©΄ ν΄λΌμ΄μΈνΈ μ½λλ₯Ό λ³κ²½ν΄μΌνλ€.
- λΆλͺ λ€νμ±μ μ¬μ©νμ§λ§ OCP μμΉμ μ§ν¬ μ μλ€.
- κ°μ²΄λ₯Ό μμ±νκ³ , μ°κ΄κ΄κ³λ₯Ό λ§Ίμ΄μ£Όλ λ³λμ 쑰립, μ€μ μκ° νμνλ€. => μ€νλ§ DI 컨ν μ΄λ
MemberRepository memberRepository = new MemoryMemberRepository(); // κΈ°μ‘΄ μ½λ
MemberRepository memberRepository = new JdbcMemberRepository(); // λ³κ²½ μ½λ
LSP 리μ€μ½ν μΉν μμΉ
- νλ‘κ·Έλ¨μ κ°μ²΄λ νλ‘κ·Έλ¨μ μ νμ±μ κΉ¨λ¨λ¦¬μ§ μμΌλ©΄μ νμ νμ μ μΈμ€ν΄μ€λ‘ λ°κΏ μ μμ΄μΌνλ€.
- λ¨μν μ»΄νμΌμ μ±κ³΅νλ κ²μ λμ΄μλ μ΄μΌκΈ°
- μλ₯Ό λ€λ©΄,
- μλμ°¨ μΈν°νμ΄μ€μ μμ μ μμΌλ‘ κ°λΌλ κΈ°λ₯
- λ€λ‘κ°κ² ꡬννλ©΄ LSP μλ°
- λ리λλΌλ μμΌλ‘ κ°μΌνλ€.
ISP μΈν°νμ΄μ€ λΆλ¦¬ μμΉ
- νΉμ ν΄λΌμ΄μΈνΈλ₯Ό μν μΈν°νμ΄μ€ μ¬λ¬ κ°κ° λ²μ© μΈν°νμ΄μ€ νλλ³΄λ€ λ«λ€.
- μΈν°νμ΄μ€κ° λͺ νν΄μ§κ³ , λ체 κ°λ₯μ±μ΄ λμμ§λ€.
- μλ₯Ό λ€λ©΄,
- μλμ°¨ μΈν°νμ΄μ€ -> μ΄μ μΈν°νμ΄μ€μ μ λΉ μΈν°νμ΄μ€λ‘ λΆλ¦¬
- μ¬μ©μ ν΄λΌμ΄μΈνΈ -> μ΄μ μ ν΄λΌμ΄μΈνΈμ μ λΉμ¬ ν΄λΌμ΄μΈνΈλ‘ λΆλ¦¬
DIP μμ‘΄κ΄κ³ μμ μμΉ
- νλ‘κ·Έλλ¨Έλ μΆμνμ μμ‘΄ν΄μΌμ§, ꡬ체νμ μμ‘΄νλ©΄ μλλ€.
- μμ‘΄μ± μ£Όμ μ μ΄ μμΉμ λ°λ₯΄λ λ°©λ² μ€ νλλ€.
- μ½κ² μ΄μΌκΈ°ν΄μ ꡬν ν΄λμ€μ μμ‘΄νμ§ λ§κ³ , μΈν°νμ΄μ€μ μμ‘΄νλΌλ λ»
MemberRepository m = new MemoryMemberRepository(); // μΈν°νμ΄μ€μ ꡬν ν΄λμ€μ λμμ μμ‘΄νλ€. => DIP μλ°
μ 리
- κ°μ²΄ μ§ν₯μ ν΅μ¬μ λ€νμ±
- λ€νμ± λ§μΌλ‘λ OCP, DIPλ₯Ό μ§ν¬ μ μλ€.
- μ€νλ§μ μμ‘΄μ± μ£Όμ (DI) κΈ°μ κ³Ό DI 컨ν μ΄λλ₯Ό ν΅ν΄ λ€νμ± + OCP, DIPλ₯Ό κ°λ₯νκ² νλ€.
'Spring > [μΈνλ°] μ€νλ§ ν΅μ¬ μ리 - κΈ°λ³ΈνΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ»΄ν¬λνΈ μ€μΊ (0) | 2021.05.19 |
---|---|
μ€νλ§ ν΅μ¬ μ리 μ΄ν΄ (1) | 2021.05.10 |