ํฐ์คํ ๋ฆฌ ๋ทฐ
Core Technologies :: Spring Framework
Foremost amongst these is the Spring Framework’s Inversion of Control (IoC) container. A thorough treatment of the Spring Framework’s IoC container is closely followed by comprehensive coverage of Spring’s Aspect-Oriented Programming (AOP) technologi
docs.spring.io
1๏ธโฃ ์์กด์ฑ
2๏ธโฃ IoC
3๏ธโฃ DDD
4๏ธโฃ ApplicationContext
5๏ธโฃ Dependency Injection
1๏ธโฃ ์์กด์ฑ
- ์ด๋ค ๊ฐ์ฒด๊ฐ ํ๋ ฅํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ์๋ก ํ ๋ ๋ ๊ฐ์ฒด ์ฌ์ด์ ์์กด์ฑ์ด ์กด์ฌํ๊ฒ ๋จ
- ์์กด์ฑ์ ์คํ ์์ ๊ณผ ๊ตฌํ ์์ ์ ์๋ก ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง
- ์ปดํ์ผํ์ ์์กด์ฑ
: ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ ์์ ๋ฐ์ํ๋ ์์กด์ฑ(ํด๋์ค ์ฌ์ด์ ์์กด์ฑ) - ๋ฐํ์ ์์กด์ฑ
: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ ์์ ์ ์์กด์ฑ(๊ฐ์ฒด ์ฌ์ด์ ์์กด์ฑ)
๐ ๊ฒฐํฉ๋
- ํ๋์ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋์ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋ณํ๋ฅผ ์๊ตฌํ๋ ์ ๋
- ๋์จํ ๊ฒฐํฉ๋, ์ฝํ ๊ฒฐํฉ๋๋ฅผ ๊ฐ์ง๋ ๊ฒ์ด ๋ฐ๋์งํ ์์กด์ฑ
2๏ธโฃ IoC
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ฆ์ ์ง์ ์ ์ด
- ํ๋ ์์ํฌ๋ ํ๋ ์์ํฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋(ex. ๋ด๊ฐ ์ง ์ฝ๋)๋ฅผ ์ฌ์ฉํ๋ฉด์ ํ๋ฆ์ ์ ์ด
- IoC ์ํฉ์์ ๊ฐ์ฒด๊ฐ ์์ ์ด ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ค์ค๋ก ์ ํํ์ง ์๊ณ ์ค์ค๋ก ์์ฑ๋ ํ์ง ์์
- IoC๊ฐ ๋์จํ ๊ฒฐํฉ๋๋ฅผ ๋ง๋ค์ด ์ค๋ค๊ณ ๋ณผ ์ ์์
๐ IoC ์ปจํ ์ด๋
- IoC๊ฐ ์ผ์ด๋๋ ์ฅ์(๊ฐ์ฒด ์์ฑ, ํ๊ดด, ๊ฐ์ฒด ์ฌ์ด์ ์์กด๊ด๊ณ์ ๋ํ ์ ์ด๊ถ์ ๊ฐ์ง)
- ๋๋ฉ์ธ ๊ฐ์ฒด(ex. ๋ชจ๋ธ, ์๋น์ค)์ ๋ํ ์์ฑ์ ์ฑ ์์ง๊ณ ์์
3๏ธโฃ DDD
๐ DDD ๋ธ๋ก๊ทธ ์ ๋ฆฌ
๐ ๋ง์ดํฌ๋ก์ํํธ ์ฐธ๊ณ ์๋ฃ
- Aggregate Root → Entity
- Entity์ ์งํฉ → Aggregate
- Service๋ ์ฌ์ค Domain Model Layer์ ์กด์ฌ
- ํ๋์ ํธ๋์ญ์ (ACID)์ด Aggregate๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณด์ฅ
- Repository๋ฅผ ํตํด์ Entity์ ์ํ๋ฅผ DB์ ์ ์ฅ (์ ์ฅ์)
4๏ธโฃ ApplicationContext
- ์คํ๋ง์์ ์ ๊ณตํ๋ ์ผ์ข ์ IoC ์ปจํ ์ด๋
- ์ธํฐํ์ด์ค๋ก ์ ๊ณต๋จ
- ๊ฐ๋ณ ๊ฐ์ฒด์ ์์ฑ, ํ๊ดด, ์์กด ๊ด๊ณ ์ค์ ์ด ์๋์ผ๋ก ์ด๋ฃจ์ด์ง
- BeanFactory๋ฅผ ์์
โ BeanFactory
- ๊ฐ์ฒด์ ์์ฑ, ํ๊ดด, ์์กด๊ด๊ณ ์ค์ ์ ์ ์ดํ๋ IoC์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๊ฐ์ง
โ Bean
- BeanFactory, IoC ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋์ด์ง๋ ๊ฐ์ฒด
- ๋น์ ์ ๋ํ ์ด์ ๊ธฐ๋ฐ(@Bean)์ผ๋ก ์ ์
๐ BeanFactory VS ApplicationContext
๐ Configuration Metadata
- ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ์ฒด๋ค์ ๋๋ฉด
- ApplicationContext์ ์ค์ ๋ง๋ค์ด์ผํ ๋น ์ ๋ณด๋ Configuration Metadata๋ก๋ถํฐ ๋ฐ์์ด
- xml ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๊ฑฐ๋ ์๋ฐ ํ์ผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ
ApplicationContext์ ๊ตฌํ์ฒด๋ ์ด๋ค Configuration Metadata๋ฅผ ์ฌ์ฉํ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง
- xml → GenericXmlApplicationContext
- ์๋ฐ ํ์ผ → AnnotationConfigApplicationContext (๊ถ์ฅ)
5๏ธโฃ Dependency Injection
- IoC๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ(์ ๋ต ํจํด, ์๋น์ค ๋ก์ผ์ดํฐ ํจํด, ํฉํ ๋ฆฌ ํจํด, ์์กด๊ด๊ณ ์ฃผ์ ํจํด ๋ฑ) ์ค ํ๋
- ์คํ๋ง์ ์์กด ๊ด๊ณ ์ฃผ์ ํจํด์ผ๋ก (1) ์์ฑ์ ์ฃผ์ ํจํด(๊ถ์ฅ) (2) setter ๊ธฐ๋ฐ ์ฃผ์ ํจํด์ ์ ๊ณต
๐ ์์กด ๊ด๊ณ ํ์ฑ์ ์ด๋ป๊ฒ ๋์ด์ง๊น? (๊ณต์๋ฌธ์)
'๋ฐฑ์๋ > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ ์คํธ ์ฝ๋์ parameterized tests๋ฅผ ์ ์ฉํด๋ณด์! (1) | 2023.11.20 |
---|---|
์คํ๋ง์์ ๋ก๊น ์ ํด๋ณด์๐ (0) | 2023.10.17 |
[์ค๋ฅ] JPAQueryFactory could not be found (0) | 2023.07.25 |
[์คํ๋ง] ๋จ์ถํค ๋ชจ์ (0) | 2023.07.07 |
[์ค๋ฅ] Port 8080 was already in use (0) | 2023.07.07 |