MapleStory Finger Point

๐ŸŸค JAVA/Spring

[Spring/SpringBoot] ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•˜์—ฌ

HYEJU01 2024. 8. 6. 10:35
 

๋ชฉ์ฐจ

 

     

     

     Spring ํƒ„์ƒ ๋ฐฐ๊ฒฝ

    ๊ธฐ์—…๋“ค์€ ๊ธฐ์—…์šฉ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•ด์•ผ ํ–ˆ๋Š”๋ฐ,
    JAVA SE(Java Standard Edition)๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ–ˆ์Œ.
    ์ด์— Oracle์ด JAVA EE๋ฅผ ์ถœ์‹œํ•˜์˜€์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•จ.

    • Java EE ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ → ๋ณต์žกํ•˜๊ณ  ๋ฌด๊ฑฐ์›€
    • EJB(Enterprise Java Beans) → Java EE์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ธฐ์ˆ ์ด์ง€๋งŒ ์„ค์ •์ด ๋ณต์žก

     


     

    Spring → Java EE์˜ ๋‹จ์  ๋ณด์™„

    Spring์€ Java EE์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ.

    • ์„ค์ • ํŒŒ์ผ, ์ปจํ…Œ์ด๋„ˆ, ๋นˆ ๋“ฑ๋ก, ์˜์กด์„ฑ ์„ค์ • ๋“ฑ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ
    • ๋ฐฐํฌ๊ฐ€ ์–ด๋ ค์›€ → WAR ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•จ
    • ๋‚ด์žฅ ์›น ์„œ๋ฒ„๊ฐ€ ์—†์Œ → ๋ณ„๋„๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ

     


     

     

    Spring Boot → Spring์„ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉ

    Spring Boot๋Š” Spring์„ ๋ณด๋‹ค ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง.

    • ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑ ๋ถˆํ•„์š” → ํ”„๋กœ์ ํŠธ ์„ค์ • + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ž๋™ ์ฒ˜๋ฆฌ
    • ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์„ค์ • ๊ฐ€๋Šฅ
    • spring-boot-starter-* ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ ํŽธ๋ฆฌ
    • ๋‚ด์žฅ ์›น ์„œ๋ฒ„ ์ง€์› (Tomcat, Jetty, Undertow ๋“ฑ)
    • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ JAR ํŒŒ์ผ ์ƒ์„ฑ ๊ฐ€๋Šฅ
    • Spring Boot๋Š” Spring MVC, JPA, Security ๋“ฑ ๊ธฐ๋Šฅ์„ ์ž๋™ ์„ค์ •

    โœ… ์ฆ‰, ๋น ๋ฅธ ๊ฐœ๋ฐœ์€ Spring Boot,
    โœ… ์„ธ๋ฐ€ํ•œ ์ œ์–ด์™€ ์„ค์ •์ด ํ•„์š”ํ•œ ๊ฐœ๋ฐœ์€ Spring์„ ์ง์ ‘ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•จ.

     


    Spring ํ•ต์‹ฌ ๊ธฐ๋Šฅ

     

    ์ œ์–ด์˜ ์—ญ์ „(Inversion of Control, IoC) 

    ์ œ์–ด์˜ ์—ญ์ „(IoC)์€ ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๋ฐ ํ๋ฆ„ ์ œ์–ด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ(Spring)๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ฐœ๋…
    ์ฆ‰, ๊ฐ์ฒด์˜ ์ƒ์„ฑ, ๊ด€๋ฆฌ, ์ƒ๋ช… ์ฃผ๊ธฐ ๋“ฑ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ•˜์ง€ ์•Š๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹

     

     

    DI(Dependency Injection) - ์˜์กด์„ฑ ์ฃผ์ž…

    ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด์„ฑ์„ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ด€๋ฆฌํ•˜์—ฌ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์œ ์—ฐ์„ฑ์„ ๋†’์ž„

    - `@Component` `@Service` `@Controller`→ ๋นˆ(Bean) ๋“ฑ๋ก

    - `@Autowired` `@Beans` → ๊ฐ์ฒด ์ฃผ์ž…

     

     

    โœ… Spring์—์„œ IoC๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ DI(์˜์กด์„ฑ ์ฃผ์ž…)์„ ์‚ฌ์šฉํ•จ.

     

     

    https://hyejux.tistory.com/709

     

    [Spring] IoC (์ œ์–ด์˜์—ญ์ „), DI (์˜์กด์„ฑ์ฃผ์ž…)

    ๐Ÿ’ป  IoC (Inversion of Control) ์ œ์–ด์˜ ์—ญ์ „๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์˜์กด์„ฑ ๊ด€๋ฆฌ์˜ ์ œ์–ด๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ / ์ปจํ…Œ์ด๋„ˆ์— ๋งก๊น€ (๊ฐœ๋ฐœ์ž๋Š” ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค)๊ฐ์ฒด๋ฅผ ํ•„์š”ํ•  ๋•Œ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด

    hyejux.tistory.com

     


     

    AOP(Aspect-Oriented Programming) - ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

    ๊ณตํ†ต ๊ธฐ๋Šฅ(๋กœ๊น…, ํŠธ๋žœ์žญ์…˜, ๋ณด์•ˆ ๋“ฑ)์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ชจ๋“ˆํ™”ํ•จ์œผ๋กœ์จ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ž„.

    - `@Aspect`, `@Before`, `@After`, `@Around`

     

     

     

    ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ(Transaction Management)

    ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜์„ ๋กค๋ฐฑ ๋ฐ ์ปค๋ฐ‹ํ•˜๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต.

    - @Transactional

     

     

    MVC ์›น ํ”„๋ ˆ์ž„์›Œํฌ

    Spring MVC๋ฅผ ํ†ตํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ œ๊ณต.

    - `@Controller`, `@RestController`, `@RequestMapping`, `@GetMapping`, `@PostMapping`

     

     

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

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๊ฒฐ์„ ์‰ฝ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต.

    • JDBC, JPA, Hibernate ๋“ฑ
    • `@Repository`