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?