λ©μμ΄ μ¬μμ²λΌμ 11κΈ° μ 체 ν΄μ»€ν€ μΆνμμΌλ‘ μ κ΅μ νμνμ΅ κ°μ’λ₯Ό μ°Ύμμ£Όλ μΉμ¬μ΄νΈλ₯Ό κΈ°ννκ² λμλ€. ν΄λΉ ν΄μ»€ν€μ μΆν κΈ°μ€μ "μ¬ν κ° λΆμΌμμ λ°μνλ λμ§νΈ 격차 ν΄μμ λμμ μ€ μ μλ μλΉμ€ μ μ"μ΄μλ€. λ§μ κ³ λ―Όμ νλ μ€ κ³΅κ³΅μλΉμ€ λΆμΌκ° λμ§νΈν λμ΄κ°λ©΄μ μ¬νμ μ·¨μ½ κ³μΈ΅μ μμΉν μ¬λλ€μ΄ μ 보 μ κ·Όμ λ§μ μ΄λ €μμ κ²ͺκ³ μλ κ²μ νμΈνμλ€. μ΄μ λ°λΌ 곡곡λ°μ΄ν°λ₯Ό μ΄μ©νμ¬ μλμ μΌλ‘ μ κ·ΌνκΈ° μ΄λ €μ΄ μ 보μ μ κ·Όμ±μ λμ¬μ λͺ¨λ μ¬λμ΄ ν΄λΉ μ 보 μ·¨λμ μμ΄ μ©μ΄νκ²λ νκ³ μ νμλ€.
μ€λμ¬ |
---|
κΉμν | λ°±νμ€ | λ°μ§κ· |
---|---|---|
νμ©ν μ μλ 곡곡λ°μ΄ν°, μ¦ νλ‘μ νΈμ μ£Όμ κ° λλ λ°μ΄ν°λ₯Ό νμνλ μ€ νμνμ΅μ΄λΌλ λΆμΌλ₯Ό λ°κ²¬νκ² λμλ€. νμνμ΅μ μ¬μ μ μ μλ "κ°μΈμ μμμ€νμ μνμ¬ μΈμ μ΄λμλ μνλ κ΅μ‘μ λ°μ μΆμ μ§μ ν₯μμν¬ μ μλ κ΅μ‘μ μ΄μΉνλ κ²" μ΄λ€. νμ§λ§ μμ΄λ¬λνκ²λ μ¬μ μ μ μμ λ°νκ², νκ΅κ΅μ‘κ°λ°μμ 2022λ λ ν΅κ³μλ£μμλ μλμ΄ λμ μλ‘, λμ΄κ° μ μ μλ‘, μ§μμ΄ μλκΆ μ§μμΌ μλ‘ μ°Έμ¬μ¨μ΄ λμλ λ°λ©΄ μ¬νμ μ·¨μ½κ³μΈ΅μ μ°Έμ¬μ¨μ μ μ‘°ν κ²μ νμΈν μ μμλ€. μ΄λ νμνμ΅μ μκ°μ μ²κ³Ό κ°μ’ μκ° μμ²΄κ° μ¨λΌμΈν λμ΄κ°λ©΄μ μ 보 μ κ·Όμ μ μ½μ΄ λ°μν κ²μΌλ‘λ ν΄μν μ μμλ€.
ν΄λΉ νλ‘μ νΈλ₯Ό μ§ννκΈ° μν΄μ 곡곡λ°μ΄ν°ν¬νΈμ "μ κ΅νμνμ΅κ°μ’νμ€λ°μ΄ν°"λ₯Ό νμ©νμλ€. ν΄λΉ λ°μ΄ν°λ μ κ΅μ λͺ¨λ νμνμ΅ κ°μ’λ₯Ό μΌκ΄μ μΌλ‘ λͺ¨μ λμ λ°μ΄ν°λ‘ κ°μ’λͺ , κ°μ’ λ΄μ©, κ°μ¬λͺ , κ΅μ‘ κΈ°κ΄ λ± λ€μν λ°μ΄ν°λ₯Ό μ 곡νλ€. λν μ 곡νλ λ°μ΄ν° νμ μμ XLS, JSON, XML, CSV νμμ νμΌλ°μ΄ν° λΏλ§ μλλΌ OpenAPIλ₯Ό ν΅ν΄ μ€μκ° λ°μ΄ν°κΉμ§ μ 곡νλ€. μ΄λ₯Ό κΈ°λ°μΌλ‘ νλ‘μ νΈμ ERDλ₯Ό μ€κ³νκ³ λ°μ΄ν°λ² μ΄μ€μ ν΄λΉ λ°μ΄ν°λ₯Ό νμ±νμ¬ μ μ₯νμλ€. κ°λ¨ν μ리λ₯Ό μ€λͺ νμλ©΄ νμ¬κΉμ§μ λ°μ΄ν°λ JSON ν¬λ§·μ νμΌ λ°μ΄ν°λ₯Ό νμ©νμ¬ μλ² μ€νκ³Ό λμμ μ μ₯μ μ§ννμκ³ , μΆν λ§€μΌ μ λ°μ΄νΈ λλ κ°μ’ μ 보λ OpenAPIλ₯Ό νμ©νμ¬ μ€μΌμ€λ§μ ν΅ν΄ λ§€μΌ 00μ 00λΆμ μλμΌλ‘ λ°μ΄ν°λ₯Ό λΆλ¬μ€λλ‘ νμλ€. λν μ μ κΈ°κ°μ΄λ κ΅μ‘ κΈ°κ°μ΄ μ’ λ£λ λ μ§λ μ μ₯νμ§ μκ±°λ μμ νμμΌλ©° μ€μΌμ€λ§μ ν΅ν΄ λ§€μΌ D-Dayλ₯Ό κ³μ°νμ¬ μ λ°μ΄νΈ νμλ€.
ν΄λΉ νλ‘μ νΈλ κ°μ’ κ²μ λ° νν°λ§μ ν΅ν μ‘°ν, μμ λ‘κ·ΈμΈμ ν΅ν κ°μ’ μ°νκΈ° λ° νκΈ° μμ±μ κΈ°λ₯μ μ£Όλ‘ κ΅¬ννμλ€. λ°λΌμ Lecture(κ°μ’), User, Wish(μ°), Review(νκΈ°) μ΄ 4κ°μ ν μ΄λΈμ νμ©νμμΌλ©° λ°μ΄ν°λ² μ΄μ€μλ μ΅μνμ μ λ³΄λ§ μ μ₯νκ³ μ μΆ κ°λ₯ν μ 보λ μ΅λν λ‘μ§μ ν΅ν΄ ꡬννκ³ μ νμλ€. νμ΄μ§μ κ²½μ° λλ© νμ΄μ§μΈ index.html, κ°μ’ 리μ€νΈ νμ΄μ§μΈ list.html, κ°μ’ μμΈ μ λ³΄μΈ detail.html, κ°μ’ νκΈ° μμ± νμ΄μ§μΈ create.html λ° edit.html κ·Έλ¦¬κ³ μ°ν κ°μ’, μμ±ν νκΈ° λ±μ μ μ μ 보λ₯Ό μ΄λν μ μλ mypage.htmlλ‘ κ΅¬μ±νμλ€.
κ°μ’ κ²μμ κ²½μ° ν΄λΉ κ°μ’λͺ μ κΈ°μ€μΌλ‘ κ²μμ ν μ μλλ‘ κ΅¬ννμλ€. μ΄λ JPA query creation(쿼리 λ©μλ μλ ꡬν) κΈ°λ₯μ νμ©νμ¬ κ°λ¨νκ² κ΅¬ννμλ€. κ²μμ°½μ ν΅ν΄ Request Parameterλ₯Ό μ λ¬ λ°μΌλ©΄ μ΄λ₯Ό νμ©ν apiλ₯Ό ν΅ν΄ ν΄λΉ κ²μ λ΄μ©μ ν¬ν¨νλ κ°μ’λͺ μ κ°μ§ κ°μ’λ€μ 리ν΄νλλ‘ νμλ€. νν°λ§ κΈ°λ₯μ κ²½μ° query creationμ νμ©νκΈ°μλ λ‘μ§μ΄ λ무 볡μ‘ν΄μ§κΈ°μ κ°λ¨νκ² Stream filterλ₯Ό ν΅ν΄ ν΄λΉλλ νν°μ λ§λ κ°μ’λ₯Ό κ±Έλ¬λ΄μ΄ 리ν΄νλ λ°©μμ νμ©νμλ€. λν μ 체 κ°μ’μ μκ° 6000κ°μ μ‘λ°νκΈ° λλ¬Έμ pagination κΈ°λ₯μ νμ©νμ¬ ν νμ΄μ§μ 9κ°μ κ°μ’λ§ μ‘°νλλλ‘ κ΅¬ννμλ€.
λ‘κ·ΈμΈν μ μ λ₯Ό μν κΈ°λ₯μΌλ‘μ¨ ν΄λΉ κ°μ’λ₯Ό μ°νκ³ νκΈ°λ₯Ό μμ±ν μ μλ κΈ°λ₯μ ꡬννμλ€. ν΄λΉ κΈ°λ₯ λͺ¨λ κ°μ’ ν μ΄λΈκ³Ό μ μ ν μ΄λΈμ κΈ°λ³Έν€λ₯Ό μΈλν€λ‘ λ°μμ ν μ΄λΈμ ꡬμ±νκ³ μ°κ³Ό νκΈ°λ₯Ό μμ± λλ μμ ν λ λ μ½λκ° μμ±λκ±°λ μμ λλ νμμΌλ‘ ꡬμ±νμλ€. μμ±ν νκΈ°μ κ²½μ° λ§μ΄νμ΄μ§ λλ μμΈ μ 보 νμ΄μ§μμ μ΄λν μ μλλ‘ κ΅¬μ±νμλ€.
Spring Securityμ OAuth 2.0μ νμ©νμ¬ κ΅¬κΈ λ‘κ·ΈμΈκ³Ό λ€μ΄λ² λ‘κ·ΈμΈμ μ°λνμ¬ λ‘κ·ΈμΈ κΈ°λ₯μ ꡬννμλ€. μ μ μ λν λ§μ μ λ³΄κ° νμνμ§λ μκΈ° λλ¬Έμ μ체 λ‘κ·ΈμΈ κΈ°λ₯μ ꡬννμ§ μμλ€. ν΄λΉ μλΉμ€ μ¬μ΄νΈμμ client μΈμ¦ μ 보λ₯Ό λ°κΈ λ°κ³ μ μ μ μ 보λ₯Ό λ°μμμΌλ©° μΈμ μ μ₯ κΈ°λ₯μ νμ©νμ¬ κΆν λ° μΈμ¦μ΄ νμν κ³³μ μ΄λ₯Ό μ μ©νμλ€.
ν΄λΉ νλ‘μ νΈλ κΈ°λ³Έμ μΌλ‘ μ€νλ§ λΆνΈ 2.7.14 λ²μ κ³Ό Thymeleafλ₯Ό νμ©νμ¬ μ μλμλ€. μΉμλ² νλ‘κ·Έλλ°μ΄λ€ 보λ νλ‘ νΈμ λ°±μλ ꡬλΆμ΄ λͺ ννμ§ μκ³ μμ΄μ΄ νλ μ νμμΌλ‘ λμμΈμ΄ μ μ© λμ§ μμ λ·°λ₯Ό ν΅ν΄ λ°±μλ κΈ°λ₯μ ν μ€νΈνκ³ μΆν νμν λμμΈμ μ νλ λ°©μμΌλ‘ νλ‘μ νΈλ₯Ό μ§ννμλ€. μ 체 νμ© μ€νμ λ€μκ³Ό κ°λ€.