Home > Spring > πŸƒ[Spring] `@SpringBootApplication` μ• λ„ˆν…Œμ΄μ…˜κ³Ό μ„œλ²„(Server)

πŸƒ[Spring] `@SpringBootApplication` μ• λ„ˆν…Œμ΄μ…˜κ³Ό μ„œλ²„(Server)
Spring Framework

πŸƒ[Spring] @SpringBootApplication μ• λ„ˆν…Œμ΄μ…˜κ³Ό μ„œλ²„(Server).

1️⃣ @SpringBootApplication μ• λ„ˆν…Œμ΄μ…˜.

  • @SpringBootApplication μ• λ„ˆν…Œμ΄μ…˜μ€ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 자주 μ‚¬μš©λ˜λŠ” 핡심 μ• λ„ˆν…Œμ΄μ…˜μœΌλ‘œ, μ—¬λŸ¬ 가지 κΈ°λŠ₯을 κ²°ν•©ν•œ 볡합 μ• λ„ˆν…Œμ΄μ…˜μž…λ‹ˆλ‹€.
  • 이λ₯Ό 톡해 Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μžλ™μœΌλ‘œ μ„€μ •λ˜κ³  μ‹€ν–‰λ©λ‹ˆλ‹€.

1. @SpringBootApplication μ„Έ 가지 μ€‘μš”ν•œ μ• λ„ˆν…Œμ΄μ…˜ κ²°ν•©.

  • 1. @SpringBootConfiguration
    • Spring의 @Configuration κ³Ό λ™μΌν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜λ©°, 이λ₯Ό 톡해 Spring μ»¨ν…μŠ€νŠΈμ—μ„œ μ„€μ • 클래슀둜 μΈμ‹λ©λ‹ˆλ‹€.
  • 2. @EnableAutoConfiguration
    • Spring Boot의 μžλ™ μ„€μ • κΈ°λŠ₯을 ν™œμ„±ν™”ν•©λ‹ˆλ‹€.
    • 이 κΈ°λŠ₯은 Spring Bootκ°€ ν΄λž˜μŠ€νŒ¨μŠ€μ— μžˆλŠ” λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ λ°”νƒ•μœΌλ‘œ μžλ™μœΌλ‘œ 섀정을 μ μš©ν•˜μ—¬ κ°œλ°œμžκ°€ 일일이 μ„€μ •ν•˜μ§€ μ•Šμ•„λ„ λ˜λ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.
  • 3. @ComponentScan
    • ν˜„μž¬ νŒ¨ν‚€μ§€μ™€ κ·Έ ν•˜μœ„ νŒ¨ν‚€μ§€μ—μ„œ Spring의 μ»΄ν¬λ„ŒνŠΈλ“€μ„ μžλ™μœΌλ‘œ μŠ€μΊ”ν•˜κ³  λ“±λ‘ν•©λ‹ˆλ‹€.
    • 즉, @Controller, @Service, @Repository λ“±μ˜ λΉˆλ“€μ΄ μžλ™μœΌλ‘œ Spring μ»¨ν…μŠ€νŠΈμ— λ“±λ‘λ©λ‹ˆλ‹€.

  • 이 μ• λ„ˆν…Œμ΄μ…˜μ€ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ§„μž…μ μ„ μ„€μ •ν•˜λŠ” 메인 ν΄λž˜μŠ€μ— 주둜 λΆ™μŠ΅λ‹ˆλ‹€.
  • 이둜 인해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μžλ™μœΌλ‘œ μ„€μ •λ˜κ³ , 싀행될 수 μžˆλŠ” ν™˜κ²½μ΄ κ°–μΆ°μ§‘λ‹ˆλ‹€.

  • κ°„λ‹¨νžˆ 말해, @SpringBootApplication 을 톡해 κ°œλ°œμžλŠ” μ΅œμ†Œν•œμ˜ μ„€μ •μœΌλ‘œλ„ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹œμž‘ν•˜κ³  ꡬ동할 수 μžˆμŠ΅λ‹ˆλ‹€.

2️⃣ μ„œλ²„(Server)λž€ λ¬΄μ—‡μΈκ°€μš”?

  • μ„œλ²„(Server)λŠ” λ„€νŠΈμ›Œν¬ μƒμ—μ„œ λ‹€λ₯Έ 컴퓨터(ν΄λΌμ΄μ–ΈνŠΈ)μ—κ²Œ 데이터λ₯Ό μ œκ³΅ν•˜κ±°λ‚˜, μš”μ²­λœ μ„œλΉ„μŠ€λ₯Ό μ²˜λ¦¬ν•˜λŠ” 컴퓨터 μ‹œμŠ€ν…œ λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§ν•©λ‹ˆλ‹€.
  • μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μˆ˜μ‹ ν•˜κ³ , κ·Έ μš”μ²­μ— λ§žλŠ” 데이터λ₯Ό μ²˜λ¦¬ν•˜κ±°λ‚˜ λ°˜ν™˜ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.
  • μ„œλ²„λŠ” μ—¬λŸ¬ 가지 μœ ν˜•μ΄ 있으며, κ·Έ 역할에 따라 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

1. μ„œλ²„μ˜ κΈ°λ³Έ κΈ°λŠ₯.

  • μš”μ²­ μˆ˜μ‹ .
    • μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή λΈŒλΌμš°μ €, λͺ¨λ°”일 μ•± λ“±)λ‘œλΆ€ν„° μš”μ²­μ„ λ°›μŠ΅λ‹ˆλ‹€.
    • 이 μš”μ²­μ€ HTTP, FTP, λ˜λŠ” λ‹€λ₯Έ ν”„λ‘œν† μ½œμ„ 톡해 μ΄λ£¨μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 데이터 처리.
    • μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 따라 데이터λ₯Ό 검색, 처리 λ˜λŠ” κ³„μ‚°ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 정보λ₯Ό μ‘°νšŒν•˜κ±°λ‚˜, νŒŒμΌμ„ μ—…λ‘œλ“œν•˜κ±°λ‚˜ λ‹€μš΄λ‘œλ“œν•˜λŠ” κΈ°λŠ₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  • 응닡 전솑.
    • μš”μ²­ 처리 ν›„, μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ κ·Έ κ²°κ³Όλ₯Ό μ‘λ‹΅μœΌλ‘œ μ „μ†‘ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄ μ›Ή μ„œλ²„λŠ” HTML νŽ˜μ΄μ§€λ₯Ό λ°˜ν™˜ν•˜κ±°λ‚˜, API μ„œλ²„λŠ” JSON ν˜•μ‹μ˜ 데이터λ₯Ό λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. μ„œλ²„μ˜ μœ ν˜•.

  • μ›Ή μ„œλ²„.
    • μ›Ή νŽ˜μ΄μ§€(HTML, CSS, JavaScript)λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— μ œκ³΅ν•˜λŠ” μ„œλ²„μž…λ‹ˆλ‹€.
    • λŒ€ν‘œμ μΈ 예둜 Apache HTTP Server, Nginx 등이 μžˆμŠ΅λ‹ˆλ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„.
    • 데이터λ₯Ό μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜λ©°, ν΄λΌμ΄μ–ΈνŠΈμ˜ 데이터 μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” μ„œλ²„μž…λ‹ˆλ‹€.
    • MySQL, PostgreSQL, Oracle 등이 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
  • 파일 μ„œλ²„.
    • νŒŒμΌμ„ μ €μž₯ν•˜κ³  이λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— μ œκ³΅ν•˜λŠ” μ„œλ²„μž…λ‹ˆλ‹€.
    • 주둜 FTP(File Transfer Protocol) μ„œλ²„κ°€ 이 역할을 ν•©λ‹ˆλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„.
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” μ„œλ²„μž…λ‹ˆλ‹€.
    • Spring Bootλ‚˜ Django 같은 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬λ™ν•˜λŠ” μ„œλ²„κ°€ 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
  • 메일 μ„œλ²„.
    • 이메일을 μ†‘μˆ˜μ‹ ν•˜λŠ” μ„œλ²„λ‘œ, SMTP, POP3, IMAP λ“±μ˜ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

3. μ„œλ²„μ˜ νŠΉμ§•.

  • 항상 켜져 있음.
    • μ„œλ²„λŠ” 보톡 24μ‹œκ°„ λ‚΄λ‚΄ μž‘λ™ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ— μ‹ μ†ν•˜κ²Œ 응닡할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • λ©€ν‹°νƒœμŠ€ν‚Ή.
    • μ„œλ²„λŠ” λ™μ‹œμ— μ—¬λŸ¬ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μžˆμ–΄μ•Ό ν•˜λ©°, 이λ₯Ό μœ„ν•΄ λ©€ν‹°μŠ€λ ˆλ“œλ‚˜ 비동기 처리 κΈ°μˆ μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
  • λ³΄μ•ˆ.
    • μ„œλ²„λŠ” λ―Όκ°ν•œ 데이터λ₯Ό μ²˜λ¦¬ν•  수 있기 λ•Œλ¬Έμ— λ³΄μ•ˆμ΄ μ€‘μš”ν•©λ‹ˆλ‹€.
    • SSL/TLSλ₯Ό ν†΅ν•œ μ•”ν˜Έν™”, 인증 및 κΆŒν•œ 관리 등이 ν•„μš”ν•©λ‹ˆλ‹€.

  • μ„œλ²„λŠ” 인터넷 μ„œλΉ„μŠ€(μ›Ή μ‚¬μ΄νŠΈ, ν΄λΌμš°λ“œ μ €μž₯μ†Œ, 이메일 λ“±)λ₯Ό μ œκ³΅ν•˜λŠ” 핡심적인 μ‹œμŠ€ν…œμ΄λ©°, ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ κ΅¬μ‘°λŠ” μ˜€λŠ˜λ‚  λŒ€λΆ€λΆ„μ˜ λ„€νŠΈμ›Œν¬ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©λ˜λŠ” 기본적인 κ΅¬μ‘°μž…λ‹ˆλ‹€.