Skip to content

spring-server/spring-server-jun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸƒ Spring μ„œλ²„ λ§Œλ“€κΈ°

ν•΄λ‹Ή λ ˆν¬μ§€ν† λ¦¬λŠ” μžλ°” μ›Ή ν”„λ‘œκ·Έλž˜λ° Next Step 및 ν•΄λ‹Ή λ ˆν¬μ§€ν† λ¦¬λ₯Ό μ°Έμ‘°ν•΄ μ§„ν–‰ν•©λ‹ˆλ‹€.

html/cssλŠ” ν•΄λ‹Ή λ ˆν¬μ§€ν† λ¦¬λ₯Ό μ°Έμ‘°ν–ˆμŠ΅λ‹ˆλ‹€.





πŸ’» ν”„λ‘œκ·Έλž¨ μ‹€ν–‰

app λͺ¨λ“ˆ application.yml 파일/μ„€μ • μΆ”κ°€ ν›„ λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ • κ°’ 등둝. test 디렉토리에도 μΆ”κ°€.

 spring:
   datasource:
     driver-class-name: ${DRIVER_CLASS_NAME}
     url: ${URL}
     username: ${USERNAME}
     password: ${PASSWORD}




λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ 생성. app λͺ¨λ“ˆμ˜ resource νŒ¨ν‚€μ§€ μ°Έμ‘°.

CREATE TABLE user
(
    id               BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT 'PK',
    username         VARCHAR(40)        NOT NULL COMMENT 'μ‚¬μš©μž 이름',
    password         VARCHAR(255)       NOT NULL COMMENT 'νŒ¨μŠ€μ›Œλ“œ',
    created_at       TIMESTAMP          NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
    last_modified_at TIMESTAMP          NULL     DEFAULT NULL COMMENT 'μ΅œμ’… μˆ˜μ •μΌ',
    deleted          VARCHAR(10)        NOT NULL COMMENT 'μ‚­μ œ 유무'
) engine 'InnoDB';




λΉŒλ“œ ν›„ μ‹€ν–‰.

# λΉŒλ“œ
./gradlew build

# μ‹€ν–‰
./gradlew bootJar




πŸ“ 곡톡 μš”κ΅¬μ‚¬ν•­

  1. 전체 λ―Έμ…˜μ€ 4λ‹¨κ³„λ‘œ λ‚˜λ‰˜μ–΄μ Έ 있으며, 각 Stepμ—λŠ” ν•„μˆ˜/선택 κ΅¬ν˜„ 사항, ν•™μŠ΅ λͺ©ν‘œκ°€ μ£Όμ–΄μ§‘λ‹ˆλ‹€.

    • λ‹€μŒ λ‹¨κ³„λ‘œ λ„˜μ–΄κ°€κΈ° μœ„ν•΄μ„œλŠ” μ΅œμ†Œ 1λͺ… μ΄μƒμ˜ Approveκ°€ ν•„μš”ν•©λ‹ˆλ‹€.
    • ν•„μˆ˜ κ΅¬ν˜„μ‚¬ν•­μ€ λ°˜λ“œμ‹œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λ©°, 선택 κ΅¬ν˜„ 사항은 κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.
      • 선택 κ΅¬ν˜„μ‚¬ν•­μ—λŠ” [선택] 이 λͺ…μ‹œ 돼 있으며, μ—†λ‹€λ©΄ ν•„μˆ˜ κ΅¬ν˜„μ‚¬ν•­μž…λ‹ˆλ‹€.
      • ν˜„μž¬ 진행쀑인 Step이 μ™„λ£Œλ˜μ§€ μ•ŠμœΌλ©΄, λ‹€μŒ λ‹¨κ³„λ‘œ λ„˜μ–΄κ°ˆ 수 μ—†μŠ΅λ‹ˆλ‹€.
  2. 각 Step이 λλ‚˜λ©΄ ν•™μŠ΅ν•œ λ‚΄μš©μ„ λΈ”λ‘œκ·Έμ— μ •λ¦¬ν•˜κ³  Jira에 링크λ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€.

  3. ν”„λ‘œμ νŠΈμ—λŠ” μ΅œμ†Œν•œμ˜ μ˜μ‘΄μ„±λ§Œ μ£Όμž…ν•˜λ©°, ORM은 μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

  4. 맀 μ£Ό 주말에 μžμ‹ μ΄ κ΅¬ν˜„ν•œ λ‚΄μš©κ³Ό ν•™μŠ΅ν•œ 지식에 λŒ€ν•΄ λ‹€λ₯Έ μ‚¬λžŒλ“€κ³Ό κ³΅μœ ν•˜κ³  μ˜λ„λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€.

  5. 각자 μ§„ν–‰ν•˜λŠ” μŠ€ν…μ΄ 달라도 μƒκ΄€μ—†μŠ΅λ‹ˆλ‹€. μžμ‹ μ΄ ν•  수 μžˆλŠ” 만큼 κ΅¬ν˜„ν•˜κ³  μ œμΆœν•©λ‹ˆλ‹€.





Step1. μ‚¬μš©μž 정보λ₯Ό μ €μž₯ν•œλ‹€.

λ„€νŠΈμ›Œν¬λ‘œ λΆ€ν„° μ „μ†‘λœ 데이터λ₯Ό νŒŒμ‹±ν•΄ μ‚¬μš©μž 정보λ₯Ό μ €μž₯ν•œλ‹€.

  • 정적 νŽ˜μ΄μ§€λ₯Ό 화면에 λ„μš΄λ‹€.
  • ν”„λ‘ νŠΈ 컨트둀러 νŒ¨ν„΄μ„ μ μš©ν•œλ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‚΄λΆ€ 인메λͺ¨λ¦¬ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€.
  • μ–΄λ–€ 정보λ₯Ό μ €μž₯ν•  μ§€λŠ” 자유둭게 μ •μ˜ν•œλ‹€.

ν•™μŠ΅ λͺ©ν‘œ

  1. λ„€νŠΈμ›Œν¬λ‘œ λΆ€ν„° μ• ν”Œλ¦¬μΌ€μ΄μ…˜κΉŒμ§€ 데이터가 μ–΄λ–»κ²Œ μ „μ†‘λ˜λŠ”μ§€ ν•™μŠ΅ν•œλ‹€.
  2. DispatcherServlet, ν”„λ‘ νŠΈ 컨트둀러 νŒ¨ν„΄μ˜ κ°œλ…κ³Ό λ™μž‘ 원리λ₯Ό ν•™μŠ΅ν•œλ‹€.




Step2. 둜그인 κΈ°λŠ₯을 κ΅¬ν˜„ν•œλ‹€.

μ‚¬μš©μž 정보λ₯Ό λ°”νƒ•μœΌλ‘œ 둜그인 κΈ°λŠ₯을 κ΅¬ν˜„ν•œλ‹€.

  • 둜그인 κΈ°λŠ₯을 κ΅¬ν˜„ν•œλ‹€.

    • μ„Έμ…˜μ„ μ΄μš©ν•΄ κ΅¬ν˜„ν•œλ‹€.
    • μ„Έμ…˜μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 내뢀에 μ €μž₯/κ΄€λ¦¬ν•œλ‹€.
    • μ„Έμ…˜ μœ μ§€ μ‹œκ°„μ„ μ œν•œ ν•œλ‹€.
    • [선택] 졜근 둜그인 기둝과 아이피λ₯Ό 식별할 수 μžˆλ„λ‘ ν•œλ‹€.
  • 개인 정보 상세 쑰회 κΈ°λŠ₯을 κ°œλ°œν•œλ‹€.


ν•™μŠ΅ λͺ©ν‘œ

  1. HTTP νŠΉμ§•μ— λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.

    • μΏ ν‚€/μ„Έμ…˜μ— λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.
  2. μ„Έμ…˜ 관리 방법에 λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.





Step3. λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅μ²΄ν•œλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 내뢀에 μ €μž₯ν•˜λ˜ 데이터λ₯Ό μ™ΈλΆ€ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•œλ‹€.

  1. λ°μ΄ν„°λ² μ΄μŠ€ μ’…λ₯˜λŠ” 자유둭게 선택 ν•œλ‹€.
    • RDB, Redis λ“±
  2. JDBC ν…œν”Œλ¦Ώμ„ κ΅¬ν˜„ν•œλ‹€.

ν•™μŠ΅ λͺ©ν‘œ

  1. 좔상화에 λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.
  2. λ°μ΄ν„°λ² μ΄μŠ€ 톡신 과정에 λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.
  3. 각 λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŠΉμ§•μ— λŒ€ν•΄ μ΄ν•΄ν•œλ‹€.
  4. νŠΈλžœμž­μ…˜μ— λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.




Step4. 데이터 전솑 방식을 일뢀 λ³€κ²½ν•œλ‹€.

맀 번 정적 λ¦¬μ†ŒμŠ€λ₯Ό κ°€μ Έμ˜€λŠ” 것은 λΉ„νš¨μœ¨μ μ΄κΈ° λ•Œλ¬Έμ—, ν•œ νŽ˜μ΄μ§€μ—μ„œ 일뢀 λ°μ΄ν„°λ§Œ λ³€κ²½ν•  수 μžˆλ„λ‘, 데이터 전솑 방식을 λ³€κ²½ν•œλ‹€.

  1. λͺ¨λ“  API에 μ μš©ν•  ν•„μš” μ—†μœΌλ©°, κ°œμΈμ •λ³΄ μˆ˜μ •λ§Œ μ μš©ν•œλ‹€.
  2. [선택] μ½”λ“œλ₯Ό λ¦¬νŒ©ν† λ§ν•œλ‹€.

ν•™μŠ΅ λͺ©ν‘œ

  1. 각 데이터 전솑 방식에 λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.