Spring Concepts
Spring Framework์ Spring Boot ์ฐจ์ด
Spring Framework๋ ์คํ์์ค ์๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ํ์ค ํ๋ ์์ํฌ์ด๋ค. ์๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํด์ Servlet ํด๋์ค๋ฅผ ์์๋ฐ์์ ๊ตฌํํด์ผ ํ์ง๋ง, Spring์ ์ฌ์ฉํ๋ฉด POJO๋ง์ผ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. Spring์ด Servlet ์์ ์ ์์์ ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
Spring Boot๋ Spring Framework๋ฅผ ๊ฐ์ ํ ์๋ก์ด ํ๋ ์์ํฌ๋ผ๊ธฐ ๋ณด๋ค, Spring ์ค์ ์ ์ต๋ํ ์ค์ด๊ณ (XML ์ค์ ํ์์์ด Java๋ก ์ค์ ), ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ Spring Best Practice๋ฅผ ๋ชจ์๋์ Spring Wrapper์ด๋ค.
Spring Framework ํน์ง
Spring Container
Spring Container๋ ์๋ฐ ๊ฐ์ฒด(POJO, Beans)์ ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ค.
POJO
POJO๋ ํ๋ ์์ํฌ์ ์์กดํ์ง ์๋ ์์ ์๋ฐ ๊ฐ์ณ๋ฅผ ๋งํ๋ฉด, Beans๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. Spring Beans๋ Spring IoC Container๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด์ด๋ค.
Java Beans๋ DTO, VO ํํ๋ฅผ Java Beans๋ผ ํ๋ฉฐ, private ํ๋์ getter, setter๋ก๋ง ์ ๊ทผ ๊ฐ๋ฅํ ํํ๋ก ์ ๋ฌ ์ธ์๊ฐ ์๋ ์์ฑ์๋ฅผ ๊ฐ์ง๋ ํํ์ ํด๋์ค์ด๋ค.
DI / IoC (Dependency Injection / Inversion Of Control)
POJO ๊ฐ ์์กด ๊ด๊ณ๋ฅผ ์ํด ํ์ํ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ์ธ๋ถ์์ (Spring Framework๊ฐ) ์์ฑํ ํ ์ฃผ์ ์์ผ์ฃผ๋ ๋ฐฉ์์ด๋ค. (Dependency Injection) ๊ทธ๋์ ํด๋์ค ๊ด๋ฆฌ ์ฃผ์ฒด๊ฐ Spring Framework์ด๋ค.
๊ฐ์ฒด ๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์ค์ ํ์ผ์ด๋ ์ด๋ ธํ ์ด์ ์ผ๋ก ์ค์ ํ ์ ์์ผ๋ฉฐ, @Autowired ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ Component ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ ์ ์๋ค.
PSA (Portable Service Abstraction)
ํน์ ๊ธฐ์ ์ ์ํฅ ๋ฐ์ง ์๊ฒ POJO ๊ธฐ๋ฐ์ผ๋ก ์ถ์ํํ์ฌ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฌ๋ผ์ง๋๋ผ๋ ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํ๋ ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค์ด, JPA๋ก Hibernate ํน์ EclipseLink๋ฅผ ์ฌ์ฉํ๋ ์์กด์ฑ์ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค.
AOP (Aspect Oriented Programming)
AOP๋ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ(๋ก๊ทธ์ธ, ํธ๋์ญ์ , ๋ก๊น , ๋ณด์, ์บ์ฑ ๋ฑ)์ ๋ถ๋ฆฌํ์ฌ, ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ณ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค.
๊ณตํต๊ธฐ๋ฅ์ด๋ ์ ์ฐจ ๋ฑ์ ํ๋๋ก ๋ฌถ์ด ๋ณ๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
๊ฐ์ฒด์งํฅ ๊ธฐ๋ณธ ์์น(OOP)์ ์ ์ฉํด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ธฐ๋ฅ(Core Concerns)๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ(Cross-cutting Concerns)์ ๋ถ๋ฆฌํด์ ๋ชจ๋ํํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๋ค.
Spring ๊ตฌ์ฑ์์
Spring MVC
Last updated
Was this helpful?