Spring MVC

• CodeStates BootCamp/Section 3

🌈 [Section3] 13. [ Spring MVC ] μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λΉŒλ“œ/μ‹€ν–‰/배포

πŸ“• 였늘 배운 λ‚΄μš©! μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ†ŒμŠ€ μ½”λ“œλ₯Ό λΉŒλ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ ν”„λ‘œνŒŒμΌ 적용 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 ✏️ Spring Boot 기반의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ†ŒμŠ€ μ½”λ“œλ₯Ό λΉŒλ“œν•˜λŠ” 방법 βœ” IntelliJ IDEλ₯Ό μ΄μš©ν•œ λΉŒλ“œ Spring Boot의 Gradle λΉŒλ“œ νˆ΄μ„ μ΄μš©ν•˜μ—¬ Gradle task λͺ…λ ΉμœΌλ‘œ λΉŒλ“œν•˜λŠ” 방법 우츑 μƒλ‹¨μ˜ [Gradle] μœˆλ„μš° νƒ­ 클릭 ν”„λ‘œμ νŠΈ λͺ… > Tasks > build 의 :bootJar or :build task 더블 클릭 build/libs 디렉토리에 생긴 Jar 파일둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ κ°€λŠ₯ πŸ’‘ :build vs :bootJar :build νƒœμŠ€ν¬ μ‹€ν–‰ν•˜λ©΄ ➜ Gradleμ—μ„œ λΉŒλ“œμ™€ κ΄€λ ¨λœ λͺ¨λ“  task듀을 μ‹€ν–‰μ‹œν‚΄ ➜ μ‹€ν–‰ κ°€λŠ₯ν•œ Jar 파일 이외에 plain Jar..

• CodeStates BootCamp/Section 3

🌈 [Section3] 12. [ Spring MVC ] API λ¬Έμ„œν™”

πŸ“• 였늘 배운 λ‚΄μš©! API λ¬Έμ„œν™” Swagger vs Spring Rest Docs Spring Rest Docs Asciidoc ✏️ API λ¬Έμ„œν™” (Documentation) ν΄λΌμ΄μ–ΈνŠΈκ°€ REST API λ°±μ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μš”μ²­μ„ μ „μ†‘ν•˜κΈ° μœ„ν•΄μ„œ μ•Œμ•„μ•Ό λ˜λŠ” μš”μ²­ 정보λ₯Ό λ¬Έμ„œλ‘œ 잘 μ •λ¦¬ν•˜λŠ” 것 ( ν΄λΌμ΄μ–ΈνŠΈ μͺ½μ—μ„œ 이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‚¬μš©μ„ μœ„ν•΄ μš”μ²­ URL / request body / query parameter 등이 ν•„μš” ) κ°œλ°œμžκ°€ 직접 수기둜 μž‘μ„±ν•  μˆ˜λ„ 있고, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λΉŒλ“œλ₯Ό 톡해 API λ¬Έμ„œλ₯Ό μžλ™μœΌλ‘œ 생성할 μˆ˜λ„ 있음 ( But, 수기둜 μž‘μ„±ν•˜λŠ” 것은 μ•„μ£Ό λΉ„νš¨μœ¨μ  ➜ API λ¬Έμ„œ μžλ™ν™” μ‚¬μš©) βœ”οΈ REST API HTTP ν”„λ‘œν† μ½œμ„ 톡해 APIλ₯Ό μ„€κ³„ν•˜κΈ° μœ„ν•œ μ•„ν‚€ν…μ²˜ μŠ€νƒ€μΌ C..

• CodeStates BootCamp/Section 3

🌈 [Section3] 11. [ Spring MVC ] ν…ŒμŠ€νŒ… 2

πŸ“• 였늘 배운 λ‚΄μš©! Mockitoλ₯Ό μ‚¬μš©ν•œ ν…ŒμŠ€νŒ… 방법 ✏️ Mock not real, but intended to be very similar to a real situation, substance etc ( 말 κ·ΈλŒ€λ‘œ, μ§„μ§œλŠ” μ•„λ‹ˆμ§€λ§Œ μ§„μ§œμ™€ μ•„μ£Ό λΉ„μŠ·ν•œ κ°€μ§œ) βœ”οΈ λͺ©μ—… (Mock-up) μ‹€μ œ μ œν’ˆμ΄ λ‚˜μ˜€κΈ° 전에 λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©ν•˜κΈ° μœ„ν•œ λͺ¨ν˜•(κ°€μ§œ) μ œν’ˆ ν…ŒμŠ€νŠΈ μ„Έκ³„μ—μ„œλŠ” κ°€μ§œ 객체λ₯Ό 의미 βœ”οΈ Mocking λ‹¨μœ„ ν…ŒμŠ€νŠΈλ‚˜ 슬라이슀 ν…ŒμŠ€νŠΈ 등에 Mock 객체λ₯Ό μ‚¬μš©ν•˜λŠ” 것 βœ” ν…ŒμŠ€νŠΈμ—μ„œ Mock 객체λ₯Ό μ‚¬μš©ν•˜λŠ” 이유 Mock 객체λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  MemberController ν…ŒμŠ€νŠΈ 쀑 postMember ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€κ³  ν•˜λ©΄, 이의 흐름은 μ•„λž˜μ™€ 같을 κ²ƒμž„ ⬇️ MemberController..

• CodeStates BootCamp/Section 3

🌈 [Section3] 10. [ Spring MVC ] ν…ŒμŠ€νŒ… 1

πŸ“• 였늘 배운 λ‚΄μš©! ν…ŒμŠ€νŠΈ (Test) JUnit Hamcrest λ‹¨μœ„ ν…ŒμŠ€νŠΈ / 계측별 슬라이슀 ν…ŒμŠ€νŠΈ μ‹€μŠ΅ ✏️ ν…ŒμŠ€νŠΈ (Test) μ–΄λ–€ λŒ€μƒμ— λŒ€ν•œ 일정 기쀀을 정해놓고, κ·Έ λŒ€μƒμ΄ μ •ν•΄μ§„ 기쀀에 λΆ€ν•©ν•˜λŠ”μ§€ λΆ€ν•©ν•˜μ§€ λͺ»ν•˜λŠ”μ§€λ₯Ό κ²€μ¦ν•˜λŠ” κ³Όμ • JUnit ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬λ‘œ ν…ŒμŠ€νŒ… βœ” ν…ŒμŠ€νŠΈμ˜ μ’…λ₯˜ 1. λ‹¨μœ„ ν…ŒμŠ€νŠΈ μ•„μ£Ό μž‘μ€ λ‹¨μœ„μ˜ κΈ°λŠ₯을 ν…ŒμŠ€νŠΈ ν•˜λŠ” 방법 λŒ€λΆ€λΆ„ λ©”μ„œλ“œ λ‹¨μœ„μ˜ μ½”λ“œλ‘œ μž‘μ„± λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό 제일 쉽고 λΉ λ₯΄κ²Œ μ μš©ν•  수 μžˆλŠ” λΆ€λΆ„ ➜ 헬퍼(helper) 클래슀 or μœ ν‹Έλ¦¬ν‹°(utility) 클래슀 πŸ’‘ But, μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λ“€μ˜ λ©”μ„œλ“œλ“€μ€ 클래슀의 객체둜 μΈμŠ€ν„΄μŠ€ν™” 될 ν•„μš”κ°€ μ—†μ–΄ λͺ¨λ‘ 정적(static)λ©”μ„œλ“œλ‘œ ꡬ성 ➜ 객체 μ§€ν–₯적인 μ‹œκ°μœΌλ‘œ μ‚¬μš© μ§€μ–‘ But, 많이 μ‚¬μš©ν•¨ λ‹¨μœ„ν…ŒμŠ€νŠΈ..

• CodeStates BootCamp/Section 3

🌈 [Section3] 9. [ Spring MVC ] νŠΈλžœμž­μ…˜

πŸ“• 였늘 배운 λ‚΄μš©! νŠΈλžœμž­μ…˜ λΆ„μ‚° νŠΈλžœμž­μ…˜ ✏️ νŠΈλžœμž­μ…˜(Transaction) μ—¬λŸ¬κ°œμ˜ μž‘μ—…λ“€μ„ ν•˜λ‚˜μ˜ 그룹으둜 λ¬Άμ–΄μ„œ μ²˜λ¦¬ν•˜λŠ” 처리 λ‹¨μœ„ μ—¬λŸ¬ 개의 μž‘μ—…μ΄ ν•˜λ‚˜μ˜ μž‘μ—…μœΌλ‘œ μΈμ‹ν•΄μ„œ μ „λΆ€ μ„±κ³΅ν•˜λ“ κ°€ μ „λΆ€ μ‹€νŒ¨ν•˜λ“ κ°€(All or Nothing)의 λ‘˜ 쀑 ν•˜λ‚˜λ‘œλ§Œ μ²˜λ¦¬λ˜μ–΄μ•Ό νŠΈλžœμž­μ…˜μ˜ 의미λ₯Ό 가짐 ➜ λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•˜λŠ” 핡심적인 μ—­ν•  μ‹ λ’°ν•  수 μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μΆ•ν•˜κΈ° μœ„ν•΄μ„œ κ°€μž₯ μ€‘μš”ν•œ λΆ€λΆ„ 쀑 ν•˜λ‚˜ ( μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 신뒰성이 κΉ¨μ§€λŠ” 상황이 λ°œμƒν•˜λ©΄ νŠΈλžœμž­μ…˜μ΄λΌκ³  λΆ€λ₯Ό 수 μ—†μŒ ) λΆ€κ°€ κΈ°λŠ₯이기 λ•Œλ¬Έμ— AOP의 적용 λŒ€μƒ 쀑 ν•˜λ‚˜ 둜컬 νŠΈλžœμž­μ…˜ / λΆ„μ‚° νŠΈλžœμž­μ…˜μœΌλ‘œ λ‚˜λ‰¨ βœ”οΈ 둜컬 νŠΈλžœμž­μ…˜ - ν•˜λ‚˜μ˜ μžμ› κ΄€λ¦¬μž(λ°μ΄ν„°λ² μ΄μŠ€)κ°€ μ°Έμ—¬ν•˜λŠ” νŠΈλžœμž­μ…˜ β € βœ”οΈ λΆ„μ‚° νŠΈλžœμž­μ…˜ - ν•˜λ‚˜ μ΄μƒμ˜ μžμ› ..

• CodeStates BootCamp/Section 3

🌈 [Section3] 8. [ Spring MVC ] Spring Data JPA 2

πŸ“• 였늘 배운 λ‚΄μš©! Spring Data JPA JPQL / SQL Audit / Fetch / CustomBeanUtils ✏️ Spring Data JPA Spring Data νŒ¨λ°€λ¦¬ 기술 쀑 ν•˜λ‚˜ ( Spring Data JDBC 도 이 쀑 ν•˜λ‚˜ ) JPA 기반의 데이터 μ•‘μ„ΈμŠ€ κΈ°μˆ μ„ μ’€ 더 μ‰½κ²Œ μ‚¬μš©ν•  수 있게 ν•΄μ€Œ ➜ 데이터 μ•‘μ„ΈμŠ€ κ³„μΈ΅μ˜ κ΅¬ν˜„μ— μžˆμ–΄ μ—¬λŸ¬λΆ„μ˜ 개발 μ‹œκ°„μ„ 단좕 πŸ’‘ JPA vs Hibernate ORM vs Spring Data JPA JPA ➜ Jakarta Persistence API(λ˜λŠ” Java Persistence API) ➜ μ—”ν„°ν”„λΌμ΄μ¦ˆ Java μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ •ν•΄ 놓은 ν‘œμ€€ μŠ€νŽ™(Specification) ( ’이 기술..

hjjju
'Spring MVC' νƒœκ·Έμ˜ κΈ€ λͺ©λ‘