[Spring] Spring ์ด๋ž€?

yeeยท2024๋…„ 9์›” 27์ผ

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
1/6

๐ŸŽˆ Spring Framework ๊ตฌ์„ฑ ์š”์†Œ ์„ค๋ช…

ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ

Spring Framework

: Spring Framework๋Š” ์ „์ฒด Spring ์ƒํƒœ๊ณ„์˜ ํ•ต์‹ฌ์ด๋ฉฐ, IoC(Inversion of Control), DI(Dependency Injection), AOP(Aspect-Oriented-Programming) ๋“ฑ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค

Spring Boot

: Spring Boot๋Š” Spring ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

  • ์ž๋™ ๊ตฌ์„ฑ, ๋‚ด์žฅ ์›น ์„œ๋ฒ„, ๊ฐ„ํŽธํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ด

์„ ํƒ ๊ตฌ์„ฑ ์š”์†Œ

Spring Data

: Spring Data๋Š” ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ(๊ด€๊ณ„ํ˜• DB, NoSQL DB ๋“ฑ)์— ์ผ๊ด€๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค.

  • ๊ฐœ๋ฐœ์ž๊ฐ€ DB ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋‹ด์„ ์ค„์ด๊ณ  ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.
    ex) JPA

Spring Session

: Spring Session์€ HTTP ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณต.

  • ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ, DB, Redis ๋“ฑ ๋‹ค์–‘ํ•œ ์ €์žฅ์†Œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ™˜๊ฒฝ์—์„œ๋„ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค.

Spring Security

: Spring Security๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ ํ”„๋ ˆ์ž„์›Œํฌ

  • ๋‹ค์–‘ํ•œ ์ธ์ฆ๋ฐฉ์‹(ํผ ๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ, OAuth 2.0, JWT ๋“ฑ)์„ ์ง€์›ํ•˜๋ฉฐ, ์„ธ๋ถ„ํ™”๋œ ๊ถŒํ•œ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

Spring Batch

: Spring Batch๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ.

  • ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ, ์ฒ˜๋ฆฌ, ์“ฐ๊ธฐ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

Spring Cloud

: Spring Cloud ๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ฐ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ณต.

  • ์„œ๋น„์Šค ๋“ฑ๋ก ๋ฐ ๊ฒ€์ƒ‰, ๊ตฌ์„ฑ ๊ด€๋ฆฌ, ๋ถ€ํ•˜ ๋ถ„์‚ฐ, ํšŒ๋กœ ์ฐจ๋‹จ ๋“ฑ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›

๐ŸŽˆ Spring Framework

ํ•ต์‹ฌ ๊ธฐ์ˆ 

: ์Šคํ”„๋ง DI ์ปจํ…Œ์ด๋„ˆ, AOP, ์ด๋ฒคํŠธ, ๊ธฐํƒ€

์›น ๊ธฐ์ˆ 

: ์Šคํ”„๋ง MVC, ์Šคํ”„๋ง WebFlux

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ 

: ํŠธ๋žœ์žญ์…˜, JDBC, ORM ์ง€์›, XML ์ง€์›

๊ธฐ์ˆ  ํ†ตํ•ฉ

: ์บ์‹œ, ์ด๋ฉ”์ผ, ์›๊ฒฉ ์ ‘๊ทผ, ์Šค์ผ€์ค„๋ง

ํ…Œ์ŠคํŠธ

: ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ง€์›


์ตœ๊ทผ์—๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ํ†ตํ•ด์„œ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ์ˆ ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ

๐ŸŽˆ Spring Boot

  • ์Šคํ”„๋ง์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›, ์ตœ๊ทผ์—๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ
  • ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑ
  • Tomcat ๊ฐ™์€ ์›น ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•ด์„œ ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋จ
  • ์†์‰ฌ์šด ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ์œ„ํ•œ starter ์ข…์†์„ฑ ์ œ๊ณต
  • ์Šคํ”„๋ง๊ณผ 3rd parth(์™ธ๋ถ€) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž๋™ ๊ตฌ์„ฑ
  • ๋ฉ”ํŠธ๋ฆญ, ์ƒํƒœ ํ™•์ธ, ์™ธ๋ถ€ ๊ตฌ์„ฑ ๊ฐ™์€ ํ”„๋กœ๋•์…˜ ์ค€๋น„ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ๊ด€๋ก€์— ์˜ํ•œ ๊ฐ„๊ฒฐํ•œ ์„ค์ •

๐ŸŽˆ Spring Framework์„ ์™œ ์‚ฌ์šฉํ• ๊นŒ?

์Šคํ”„๋ง์€ ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

์Šคํ”„๋ง ์ด์ „์—๋Š” ํŠน์ • ๊ธฐ์ˆ ๊ณผ ํ™˜๊ฒฝ(EJB = Enterprise Java Beans)์— ์ข…์†๋˜์–ด ์˜์กดํ•˜๊ฒŒ ๋œ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๊ณ , ํ™•์žฅ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์กŒ๋‹ค.
=> ์ด๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ธ ์ž๋ฐ”์˜ ์žฅ์ ๋“ค์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ POJO ๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

POJO(Plain Old Java Object)

Getter, Setter๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ€์žฅ ์ˆœ์ˆ˜ํ•œ ํ˜•ํƒœ์˜ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ POJO ๋ผ ํ•œ๋‹ค.

โœ… Spring์€ POJO๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์žฅ์ ๊ณผ EJB์—์„œ ์ œ๊ณตํ•˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„œ๋น„์Šค์™€ ๊ธฐ์ˆ ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ POJO ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋‹ค.




๐Ÿ“ƒ์ถœ์ฒ˜ ๋ฐ ์ฐธ๊ณ ์ž๋ฃŒ๐Ÿ“ƒ

https://www.youtube.com/watch?v=q_QEh3fz0zw&list=PLumVmq_uRGHi8y6hVKM5-bELNTyg5b6dV&index=2

0๊ฐœ์˜ ๋Œ“๊ธ€