- Entity / Value Object (+ DTO, DAO ๋ฑ๋ฑ์ ์ฉ์ด?)
- Entity : ์๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด, ์๊ฐ์ ๋ฐ๋ผ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ค.
- Value Object : ์๋ณ์๋ฅผ ๊ฐ์ง์ง ์๋ ๊ฐ์ฒด, ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- Data Transfer Object : ๊ณ์ธต๊ฐ ํต์ ์ ์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด
- Data Access Object : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฐ์ฒด Database๋ฅผ ์ํ ๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌ๋ถํ๊ธฐ ์ํด์
- Dependency (+ Injection)
- ์์กด์ด๋? ๊ธฐ๋ฅ ๊ตฌํ์ ์ํ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ค์ ์ฌ์ฉํ๋ ๊ฒ
- ์ด๋ ์ฌ์ฉ์ด๋ ๊ฐ์ฒด ์์ฑ, ๋ฉ์๋ ํธ์ถ, ๋ฐ์ดํฐ ์ฌ์ฉ ๋ฑ
- ์์กด์ ํ๋ฉด ๋ณ๊ฒฝ์ด ์ ํ๋ ๊ฐ๋ฅ์ฑ์ ์๋ฏธ!
- ex) ํธ์ถํ๋ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๊ฐ ๋ณ๊ฒฝ, ๋ฐ์ํ๋ ์์ธํ์ ๋ณ๊ฒฝ
- ๋จ๋จํ ๊ฒฐํฉ๋์ ๋์จํ ๊ฒฐํฉ๋
- ๋จ๋จํ ๊ฒฐํฉ๋ : Compile ์์ ์ ์์กด์ฑ ์์ฑ
- ๋์จํ ๊ฒฐํฉ๋ : Runtile ์์ ์ ์์กด์ฑ ์์ฑ
- ์์ง๋์ ๊ฒฐํฉ๋
- ์์ง๋(Cohesion)
- ๋ชจ๋์ ํฌํจ๋ ๋ด๋ถ ์์๋ค์ด ์ฐ๊ฐ๋ผ ์๋ ์ ๋
- ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋ ๋ชจ๋ ๋ด๋ถ์์ ๋ฐ์ํ๋ ๋ณ๊ฒฝ์ ์ ๋
- ๋ณ๊ฒฝ์ ๋ง๋ค๋ฉด ์์ง๋๊ฐ ๋์ ๊ฒ!
- ๊ฒฐํฉ๋(Coupling)
- ๋ค๋ฅธ ๋ชจ๋์ ๋ํด์ ์ผ๋ง๋ ๋ง์ ์ง์์ ๊ฐ๊ณ ์๋ ์ง๋ฅผ ๋ํ๋
- ํ ๋ชจ๋์ด ๋ณ๊ฒฝ๋๊ธฐ ์ํด์ ๋ค๋ฅธ ๋ชจ๋์ ๋ณ๊ฒฝ์ ์๊ตฌํ๋ ์ ๋
- ๊ฒฐํฉ๋๊ฐ ๋์์๋ก ๋ณ๊ฒฝํด์ผํ๋ ๋ชจ๋์ ์๊ฐ ๋์ด๋ ๋ณ๊ฒฝ์ด ์ด๋ ค์ ์ง๋ค.
- ์ข์ ์ค๊ณ๋ ๋์ ์์ง๋์ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
- ์์กด์ฑ ์ฃผ์ (DI)
- IoC๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋
- ๊ตฌํ ๋ฐฉ๋ฒ
- ์์ฑ์
- setter
- field
- ์์ฑ์๋ฅผ ๊ถ์ฅํจ.
- null์ ์ฃผ์ ํ์ง ์๋ ํ NPE๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- final์ ์ฌ์ฉํ ์ ์์ด์ ์์ฑ ์ดํ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- ์์ฑ์์ ์์กด ๊ฐ์ฒด๋ฅผ ๋ฃ์ง ์์ผ๋ฉด ๊ฐ์ฒด๊ฐ ์์ฑ๋์ง ์๋๋ค.
- ์ํ ์์กด์ฑ์ ์ปดํ์ผ ๋จ๊ณ์์ ํ์ธํ ์ ์๋ค.
- ํน์๋ ๋ณ๊ฒฝ์ด ํ์ํ ์ ์๋ค๋ฉด Setter๋ฅผ ๊ณ ๋ คํด๋ณผ ์๋ ์๋ค?
- Autowired Annotation์ด Spring 4.3 ์ดํ๋ก Default
- ์ฌ๋ฌ ๊ฐ ๊ตฌํ์ฒด๊ฐ ์๋ค๋ฉด primary๋ฅผ ์ด์ฉํ ์ฐ์ ์์๋ Qualifer๋ฅผ ํตํ ๋ค์ด๋ฐ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ๋ค.
- ์ํ ์์กด
- ์์กด ๊ฐ์ฒด๋ค์ ์์กด ๊ด๊ณ๊ฐ ์ํ๋๋ ๊ฒฝ์ฐ
- ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ญ์ง?
- IoC(Inversion Of Control)
- ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๊ฐ ํ๋ ์์ํฌ๊ฐ ์ง๋์ ํ์์ ์๋์ ์ผ๋ก ๋์
- The Hollywoord Principle
- Context๋ ๊ฐ์ฒด์ ์์ฑ, ์ฐ๊ด๊ด๊ณ๋ฅผ ๋ด๋น
- Context๋ IoC๊ฐ ์ผ์ด๋๋ ๊ณต๊ฐ์ผ๋ก IoC Container๋ผ๊ณ ํ๋ค.
- Spring์์๋ Application Context๋ฅผ ์ด์ฉํ๋ค.
- IoC๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
- ์ ๋ตํจํด / ์๋น์ค ๋ก์ผ์ดํฐ ํจํด/ ํฉํ ๋ฆฌ ํจํด/ ์์กด์ฑ ์ฃผ์ ๋ฑ
- ApplicationContext
- Bean๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด!
- Bean ๊ฐ์ฒด: Application Context์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด
- JVM์ ๋ง์ ๊ฐ์ฒด๊ฐ ๋ฑ๋ก๋๊ณ ์ด๋ค ์ค ApplicationContext์์ ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ Bean์ด๋ผ๋ ์ฉ์ด๊ฐ ๋ง๋ค์ด์ง.
- Bean anontation์ ์ด์ฉํด์ ์ ์ธ
- Configuration Meta
- ์ค์ ๋ก ApplicationContext๋ ๋ง๋ค์ด์ผ ํ ๋น ๊ฐ์ฒด ์ ๋ณด๋ฅผ config๋ฅผ ํตํด์ ๋ฐ์.
- ์ด๋ config metadata๋ฅผ xml๊ณผ java๋ก ์์ฑํ ์ ์๋ค
- xml ์์ฑ โ GenericXmlApplicationContext ๊ตฌํ์ฒด ์ฌ์ฉ
- java์์ฑ โ AnnotationConfigApplicationContext ๊ตฌํ์ฒด ์ฌ์ฉ
- java๋ก ์์ฑ๋๋ ๊ฒ ์ฃผ๋ฅ๋ฅผ ์ด๋ฃฌ๋ค.
- Components Scan
- ์์์ ๋งํ๋ ๋น ๊ฐ์ฒด๋ค์ ๋ํด์ ์ค์ ํด๋์ค์ ๋ฐ๋ก ์์ฑํ์ง ์์๋ ์์์ ์ฐพ์์ ๋ฑ๋กํด์ฃผ๋ ๊ธฐ๋ฅ!(๊ฐ๋ฐ์์ ํธ์์ฑ๊ณผ ์์ฐ์ฑ ์ฆ๋)
- Stereotype Annotation์ ์ด์ฉํด์ Scan ๋์ ๊ฐ์ฒด๋ฅผ ํ๊ธฐ
- ๋ถํ์ํ ๊ฐ์ฒด๋ค์ excloude filters๋ฅผ ํตํด์ ์ ๊ฑฐ ๊ฐ๋ฅ

- Bean Scope
- singleton
- ๋จ ํ๋์ ๊ฐ์ฒด๋ง ์์ฑ๋จ.(Default)
- prototype
- ๋งค๋ฒ ์๋ก์ด ํ์ ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋จ.
- @Scope ์ด์ฉ

@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
- Bean Life Cycle
- Bean ์์ฑ ์๋ช ์ฃผ๊ธฐ Callback
- @PostConstruct์ด ์ ์ฉ๋ method ํธ์ถ
- Bean์ด InitializingBean interface ๊ตฌํ ์ afterPropertiesSet ํธ์ถ
- @Bean์
initMethod
์ ์ค์ ํ ๋ฉ์๋ ํธ์ถ - Bean ์๋ฉธ ์๋ช ์ฃผ๊ธฐ Callback
- @PreDestory๊ฐ ์ ์ฉ๋ method ํธ์ถ
- Bean์ด DisposableBean interface ๊ตฌํ ์ destory ํธ์ถ
- @Bean์
destoryMethod
์ ์ค์ ํ ๋ฉ์๋ ํธ์ถ
- Enviroment Profile
- ๋ชจ์๊ฐ์ฒด
- Garbage Collector