ํฌ์คํธ ์ ๋ชฉ ๊ทธ๋๋ก Spring ๊ธฐ์ด๋ฅผ ๋ค์น๊ธฐ ์ํด ์์ฑํ๋ TIL ์ฑ๊ฒฉ์ ์คํ๋ง ๊ธฐ์ด ์์ฝ ์๋ฆฌ์ฆ์
๋๋ค.
Java๋ ์๋๋ฐ Spring์ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๋ ์ด๋ณด์๋ค์๊ฒ ์ ์ฉํ๋๋ก ์์ ๋ง ์ ๋ฆฌํ์์ต๋๋ค.
Spring 101 ์๋ฆฌ์ฆ
Spring 101 - #1 ์๋ฐ์ ์ ์ฐจ์ /๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
Spring 101 - #2 ์๋ฐ ํค์๋์ OOP ํน์ฑ 4๊ฐ์ง
Spring 101 - #3 ๊ฐ์ฒด์งํฅ์ค๊ณ 5์์น SOLID
Spring 101 - #4 ์คํ๋ง ๋์์ธ ํจํด Spring Design Pattern
#SOLID
Single Responsibility Principal ๋จ์ผ์ฑ ์์์น |
์ด๋ค ํด๋์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ์ด์ ๋ ์ค์ง ํ๋๋ค | ๋ชจ๋ธ ์ถ์ํ๋ ๊ณตํต์ ์ ์์ ํด๋์ค๋ก ๋ฌถ๊ธฐ |
Open Close Principal ๊ฐ๋ฐฉํ์์์น |
์์ ์ ํ์ฅ์๋ ์ด๋ ค์๊ณ ๋ณํ์๋ ๋ซํ์๋ค | ๊ณตํต์ -> ์ธํฐํ์ด์ค |
Liskov Substitution Principal ๋ฆฌ์ค์ฝํ ์นํ ์์น |
์๋ธ ํ์ ์ ์ธ์ ๋ ๊ธฐ๋ณธ ํ์ ์ผ๋ก ๊ต์ฒด ๊ฐ๋ฅ | |
Interface Segregation Principal ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น |
ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉํ์ง ์๋ method์ ์์กดํ์ง ์๋๋ค | ํ์ฑํ ์์ํด๋์ค + ์ถ์ ๋ฉ์๋ |
Dependency Introversion Principal ์์กด ์ญ์ ์์น |
์์ ๋ณด๋ค ๋ณํ๊ธฐ ์ฌ์ด๊ฒ์ ์์กดํ์ง ์๋๋ค | ์์ ํด๋์ค ์ธํฐํ์ด์ค ์ถ์ ํด๋์ค |
#๋ชฉ์
- High Cohesion ๋์ ์์ง๋ & Loose Coupling ๋ฎ์ ๊ฒฐํฉ๋
- OOP 4๋ ํน์ฑ ๊ธฐ๋ฐ, ๋์์ธ ํจํด์ ๋ผ๋, ์คํ๋ง ํ๋ ์์ํฌ์ ๊ทผ๊ฐ
#SRP ๋จ์ผ ์ฑ ์ ์์น - ๋ชจ๋ธ ์ถ์ํ์ ๊ฐ์ฅ ๊ด๋ จ์ด ๊น๋ค Encapsulation
- ๋ค์ํ ์ญํ ์ ๊ณตํต์ ์ด ๋ง๋ค -> ์์ ํด๋์ค๋ก ๊ณตํต์ ์ ๋ฌถ๊ณ ๊ฐ๊ฐ ์์ํด์ ๊ณตํต์ด ์๋ ๋ถ๋ถ์ ๊ตฌํํ๋ค
- (์ฌ๋-> ๋จ์/์ฌ์ ; ๊ฐ์์ง -> ์์ปท/์์ปท)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทํ ๊ณผ์ ๋ ๋จ์ผ์ฑ ์ ์์น
- if ๋ฌธ ๋จ๋ฐ -> ๋จ์ผ์ฑ ์์์น์ ์งํค์ง ์์ ๊ฒฝ์ฐ์ผ ๊ฐ๋ฅ์ฑ
#OCP ๊ฐ๋ฐฉ ํ์ ์์น
- ์: JDBC ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์ค๋ผํด, MySQL, MS-SQL
- ์ธํฐํ์ด์ค๋ก ๊ณตํต์ ์ ๋ฌถ์ด์ ๊ตฌ๋งค ํ์์๋ ๋ซํ์๋ ์ง์ ๊ด๋ฆฌ์๋ ๊ฐ๋ฐฉ๋ ์์
#LSP ๋ฆฌ์ค์ฝํ ์นํ ์์น
ํ์ ํด๋์ค is a kind of ์์ํด๋์ค
๊ตฌํ ํด๋์ค is able to ์ธํฐํ์ด์ค
#ISP ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
- ๋น์ฝํ ์์ ํด๋์ค ๋ณด๋ค๋ ํ์ฑํ ์์ ํด๋์ค + ์ถ์ ๋ฉ์๋๊ฐ ์ข๋ค
- ์ธํฐํ์ด์ค ์ต์์ฃผ์ ์์น
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋จ์ผ ์ฑ ์ ์์น์ ์ ์ฉํ๋ ๊ฒ์ด ๋ ์ข๋ค (๋จ์๋ฅผ ๋จ์์น๊ตฌ/์๋ค/์๋์/์ง์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ)
#DIP ์์กด ์ญ์ ์์น
- ์ญ์ ๋ ์์กด์ ์์ ํด๋์ค, ์ธํฐํ์ด์ค, ์ถ์ ํด๋์ค๋ฅผ ํตํด ์์กดํ๋ค (๊ณ ์ฐจ์-์ ์ฐจ์ / ์ถ์ํ-๊ตฌ์ฒดํ)
- ์์ ๋ณด๋ค ๋ณํ๊ธฐ ์ฌ์ด ๊ฒ์ ์์กดํ์ง ์๊ณ ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ ์์ ํด๋์ค์ ๋๋ค
- ๊ณ ์ฐจ์ ๋ชจ๋์ ์ ์ฐจ์ ๋ชจ๋์ ์์กดํ์ง ์๋๋ค. ์ด ๋ ๋ชจ๋ ๋ชจ๋ ๋ค๋ฅธ ์ถ์ํ๋ ๊ฒ์ ์์กดํ๋ค.
- ์ถ์ํ๋ ๊ฒ์ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ์ง ์๋๋ค. ๊ตฌ์ฒด์ ์ธ ๊ฒ์ด ์ถ์ํ ๋ ๊ฒ์ ์์กดํ๋ค.
- ์์ฃผ ๋ณ๊ฒฝ๋๋ concrete ํด๋์ค์ ์์กดํ์ง ์๋๋ค.
#์ถ์ฒ ์ฑ
- Clean Software, by Robert C Martin
- ๊ฐ์ฒด ์งํฅ SW ์ค๊ณ์ ์์น - ZDnet ๊ธฐ์ฌ
- Head First Design Pattern
- ํ ๋น์ ์คํ๋ง 3.1
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ ๋ฌด์์ธ๊ฐ? (์ธ์ฌ์ดํธ, 2011)
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ (์ํค๋ถ์ค, 2011)
#์ฐธ๊ณ ๋ฆฌ์์ค
์คํ๋ง ์ ๋ฌธ์ ์ํ ์๋ฐ ๊ฐ์ฒด ์งํฅ์ ์๋ฆฌ์ ์ดํด, ๊น์ข ๋ฏผ, ์ํค๋ถ์ค
'๐ป Software Engineering > Java Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Springย Bootย Batchย -ย ๋ณ๋ ฌย ์ฒ๋ฆฌ (0) | 2021.11.28 |
---|---|
Spring 101 - #4 ์คํ๋ง ๋์์ธ ํจํด Spring Design Pattern (0) | 2020.07.24 |
Spring 101 - #2 ์๋ฐ ํค์๋์ OOP ํน์ฑ 4๊ฐ์ง (0) | 2020.07.19 |
Spring 101 - #1 ์๋ฐ์ ์ ์ฐจ์ /๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ (0) | 2020.07.13 |