Home > SpringBoot > πŸ›οΈ[SpringBoot] μŠ€ν”„λ§ λΆ€νŠΈλž€ λ¬΄μ—‡μΌκΉŒμš”?

πŸ›οΈ[SpringBoot] μŠ€ν”„λ§ λΆ€νŠΈλž€ λ¬΄μ—‡μΌκΉŒμš”?
SpringBoot

πŸ›οΈ[SpringBoot] μŠ€ν”„λ§ λΆ€νŠΈλž€ λ¬΄μ—‡μΌκΉŒμš”?

πŸ“– κ°œμš”

SpringBootλŠ” Spring Frameworkλ₯Ό 기반으둜 ν•œ Java λ°±μ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. λ³΅μž‘ν•œ μ„€μ • 과정을 μžλ™ν™”ν•˜κ³ , λ‚΄μž₯ μ„œλ²„λ₯Ό μ œκ³΅ν•˜μ—¬ κ°œλ°œμžκ°€ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ— 더 집쀑할 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.


πŸ€” μ™œ ν”„λ ˆμž„μ›Œν¬κ°€ ν•„μš”ν•œκ°€?

규λͺ¨κ°€ 크고 λ³΅μž‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  λ•Œ, κ°œλ°œμžκ°€ μ²˜μŒλΆ€ν„° λκΉŒμ§€ λͺ¨λ“  뢀뢄을 κ°œλ°œν•˜λŠ” 것은 λΉ„νš¨μœ¨μ μž…λ‹ˆλ‹€. ν”„λ ˆμž„μ›Œν¬λŠ” λ‹€μŒκ³Ό 같은 이점을 μ œκ³΅ν•©λ‹ˆλ‹€:

  • 개발 μ‹œκ°„ 단좕: κ²€μ¦λœ ꡬ쑰와 κΈ°λŠ₯ 제곡
  • μœ μ§€λ³΄μˆ˜ νŽΈμ˜μ„±: ν‘œμ€€ν™”λœ νŒ¨ν„΄κ³Ό ꡬ쑰
  • μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈ: λΌμ΄λΈŒλŸ¬λ¦¬λ³΄λ‹€ 포괄적인 개발 ν™˜κ²½

πŸ” Spring Ecosystem

Spring Framework

λͺ¨λ“  Spring ν”„λ‘œμ νŠΈμ˜ 핡심 기반이 λ˜λŠ” ν”„λ ˆμž„μ›Œν¬

μ£Όμš” κΈ°λŠ₯:

  • μ˜μ‘΄μ„± μ£Όμž… (Dependency Injection)
  • μ œμ–΄μ˜ μ—­μ „ (Inversion of Control)
  • Spring MVC λͺ¨λΈ
  • λ°μ΄ν„°λ² μ΄μŠ€ μ ‘κ·Ό, λ©”μ‹œμ§•, νŠΈλžœμž­μ…˜ 지원

Spring Boot

Spring Frameworkλ₯Ό 더 쉽고 λΉ λ₯΄κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 도ꡬ

핡심 νŠΉμ§•:

  • μžλ™ ꡬ성 (Auto Configuration)
  • λ‚΄μž₯ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„ (Tomcat, Jetty λ“±)
  • 단독 μ‹€ν–‰ κ°€λŠ₯ν•œ JAR 파일 생성
  • λ³΅μž‘ν•œ μ„€μ • κ³Όμ • κ°„μ†Œν™”

기타 Spring ν”„λ‘œμ νŠΈ

  • Spring Data: 데이터 μ•‘μ„ΈμŠ€ 좔상화
  • Spring Security: λ³΄μ•ˆ κΈ°λŠ₯
  • Spring Cloud: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ 지원

✨ Spring Framework의 핡심 νŠΉμ§•

1. μ œμ–΄μ˜ μ—­μ „ (IoC, Inversion of Control)

객체의 생성과 관리λ₯Ό κ°œλ°œμžκ°€ μ•„λ‹Œ Spring Containerκ°€ λ‹΄λ‹Ή

2. μ˜μ‘΄μ„± μ£Όμž… (DI, Dependency Injection)

객체 κ°„μ˜ 의쑴 관계λ₯Ό Spring이 μžλ™μœΌλ‘œ μ—°κ²°

3. 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° (AOP)

νš‘λ‹¨ 관심사λ₯Ό λͺ¨λ“ˆν™”ν•˜μ—¬ μ½”λ“œμ˜ 쀑볡을 μ€„μž„

4. MVC νŒ¨ν„΄ 지원

μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ Model-View-Controller ꡬ쑰 제곡


🚫 Spring Framework의 ν•œκ³„μ 

μ„€μ •μ˜ λ³΅μž‘μ„±

  • XML μ„€μ • 파일의 λ³΅μž‘ν•¨
  • λ‹€μ–‘ν•œ μ„€μ • μ˜΅μ…˜μœΌλ‘œ μΈν•œ ν•™μŠ΅ 곑선 증가

높은 초기 ν•™μŠ΅ λ‚œμ΄λ„

  • κ°œλ… 이해λ₯Ό μœ„ν•œ λ§Žμ€ ν•™μŠ΅ μ‹œκ°„ ν•„μš”
  • λ‹€μ–‘ν•œ κΈ°λŠ₯ ν™œμš©μ„ μœ„ν•œ κΉŠμ€ 이해 μš”κ΅¬

μ˜μ‘΄μ„± κ΄€λ¦¬μ˜ 어렀움

  • 라이브러리 κ°„ ν˜Έν™˜μ„± 문제
  • 버전 좩돌 ν•΄κ²°μ˜ λ³΅μž‘μ„±

배포 ν™˜κ²½ κ΅¬μ„±μ˜ λ²ˆκ±°λ‘œμ›€

  • λ³„λ„μ˜ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„ ν•„μš”
  • λ³΅μž‘ν•œ 배포 κ³Όμ •

🎯 SpringBoot의 ν•΄κ²°μ±…

μžλ™ μ„€μ • (Auto Configuration)

@SpringBootApplication // 이 ν•˜λ‚˜μ˜ μ• λ…Έν…Œμ΄μ…˜μœΌλ‘œ λͺ¨λ“  μ„€μ • μ™„λ£Œ!
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

λ‚΄μž₯ μ„œλ²„

  • Tomcat, Jetty, Undertow 등을 λ‚΄μž₯
  • λ³„λ„μ˜ μ„œλ²„ μ„€μΉ˜ 없이 java -jar λͺ…λ ΉμœΌλ‘œ μ‹€ν–‰ κ°€λŠ₯

μ˜μ‘΄μ„± 관리 κ°„μ†Œν™”

<!-- κΈ°μ‘΄ Spring Framework -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.21</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.21</version>
</dependency>
<!-- ... μˆ˜λ§Žμ€ μ˜μ‘΄μ„±λ“€ -->

<!-- SpringBoot Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

운영 ν™˜κ²½ 지원

  • Health Check μ—”λ“œν¬μΈνŠΈ
  • Metrics μˆ˜μ§‘
  • μ™ΈλΆ€ μ„€μ • 관리 (application.properties/yml)

πŸ—οΈ SpringBoot의 핡심 κ°œλ…

Starter Dependencies

λͺ©μ λ³„λ‘œ ν•„μš”ν•œ μ˜μ‘΄μ„±μ„ λ¬Άμ–΄μ„œ 제곡:

  • spring-boot-starter-web: μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발
  • spring-boot-starter-data-jpa: JPAλ₯Ό μ΄μš©ν•œ 데이터 μ•‘μ„ΈμŠ€
  • spring-boot-starter-security: λ³΄μ•ˆ κΈ°λŠ₯
  • spring-boot-starter-test: ν…ŒμŠ€νŠΈ ν™˜κ²½

ν”„λ‘œνŒŒμΌ (Profiles)

ν™˜κ²½λ³„ μ„€μ • 관리:

# application-dev.yml
server:
  port: 8080
logging:
  level:
    com.example: DEBUG

# application-prod.yml
server:
  port: 80
logging:
  level:
    com.example: INFO

πŸŽ‰ κ²°λ‘ 

Spring FrameworkλŠ” μžλ°” μƒνƒœκ³„μ˜ 핡심 ν”„λ ˆμž„μ›Œν¬λ‘œμ„œ κ°•λ ₯ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€λ§Œ, λ³΅μž‘ν•œ μ„€μ •κ³Ό 높은 ν•™μŠ΅ κ³‘μ„ μ΄λΌλŠ” 단점이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

SpringBootλŠ” μ΄λŸ¬ν•œ λ¬Έμ œμ λ“€μ„ ν•΄κ²°ν•˜μ—¬:

  • ⚑ λΉ λ₯Έ 개발 μ‹œμž‘: μ΅œμ†Œν•œμ˜ μ„€μ •μœΌλ‘œ ν”„λ‘œμ νŠΈ μ‹œμž‘
  • πŸ”§ μžλ™ ꡬ성: κ΄€λ‘€λ₯Ό λ”°λ₯΄λŠ” μ„€μ • μžλ™ν™”
  • πŸ“¦ κ°„νŽΈν•œ 배포: λ‚΄μž₯ μ„œλ²„λ‘œ 단독 μ‹€ν–‰ κ°€λŠ₯
  • πŸ› οΈ 생산성 ν–₯상: λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ— 집쀑 κ°€λŠ₯

Spring μƒνƒœκ³„λŠ” Spring Framework, SpringBoot, 그리고 λ‹€μ–‘ν•œ μ„œλΈŒ ν”„λ‘œμ νŠΈλ“€μ΄ ν•¨κ»˜ κ΅¬μ„±ν•˜λŠ” 완성도 높은 개발 ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€.


πŸ“š 더 μ•Œμ•„λ³΄κΈ°

곡식 λ¬Έμ„œ: spring.io

β€œSpring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world’s most popular Java framework.”