Java/Spring 26

[SpringBoot] 정적 λ¦¬μ†ŒμŠ€μ— κΆŒν•œ μš”κ΅¬ν•˜μ§€ μ•ŠκΈ°

πŸ“Œν™˜κ²½IntelliJ UltimateJava 17SpringBoot 3.2.3Gradle - Groovy Dependencies: Spring WebThymeleafSpring Data JPAlombokMariaDB 10.11Spring Dev toolSpring Security  πŸ“Œλ¬Έμ œλͺ¨λ“  정적 λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ 403 μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄μ„œ 이미지, js, css 파일이 λ‘œλ”©λ˜μ§€ λͺ»ν•˜λŠ” 문제. πŸ“Œν•΄κ²°μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°λŠ” 섀정이 μ—†μœΌλ©΄ λͺ¨λ“  λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ κΆŒν•œμ„ μš”κ΅¬ν•˜λ―€λ‘œ 정적 λ¦¬μ†ŒμŠ€ λ˜ν•œ 403(Access Denied) μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 일반적인 κ²½μš°μ—λŠ” 정적 λ¦¬μ†ŒμŠ€μ— κΆŒν•œμ„ μš”κ΅¬ν•˜μ§€ μ•Šμ•„λ„ λ˜λ―€λ‘œ `resource` 폴더 λ‚΄ `/static` μ΄ν•˜μ˜ λͺ¨λ“  νŒŒμΌμ— λŒ€ν•΄ 접근을 ν—ˆμš©ν•΄μ€€λ‹€.   @Bean..

Java/Spring 2024.03.28

[SpringBoot] Spring Security: permitAll()이 λ™μž‘ν•˜μ§€ μ•ŠμŒ

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool Spring Security πŸ“Œλ¬Έμ œ κ΄€λ¦¬μž νŽ˜μ΄μ§€λ₯Ό μ˜λ―Έν•˜λŠ” `/member`λ₯Ό μ œμ™Έν•œ λͺ¨λ“  url에 μš”μ²­μ„ ν—ˆμš©ν•˜λ €κ³  ν•œλ‹€. 정적 λ¦¬μ†ŒμŠ€μ™€ μž‘μ„±λœ λ‹€λ₯Έ url의 μš”μ²­μ„ λͺ¨λ‘ ν—ˆμš©ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같이 μž‘μ„±ν–ˆλ‹€. http.csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(request -> request.requestMatchers(HttpMethod.POST, "/another..

Java/Spring 2024.03.27

[SpringBoot] νŽ˜μ΄μ§€λ„€μ΄μ…˜(Pagination)

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 SpringBoot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool QueryDSL 5.0.0 πŸ“ŒνŽ˜μ΄μ§€λ„€μ΄μ…˜(Pagination)μ΄λž€? νŽ˜μ΄μ§• λ˜λŠ” νŽ˜μ΄μ§€λ„€μ΄μ…˜μ΄λΌκ³  λΆ€λ₯Έλ‹€. λ‹€λŸ‰μ˜ 데이터λ₯Ό κ³΅ν†΅λœ 개수만큼 μ—¬λŸ¬ 묢음으둜 λ‚˜λˆ„μ–΄ νŠΉμ • νŽ˜μ΄μ§€ λ‹Ή ν•œ λ¬ΆμŒμ„ 화면에 λ³΄μ—¬μ£ΌλŠ” 것을 λ§ν•œλ‹€. DB에 λ“±λ‘λœ 데이터가 λ§Žμ€ 경우 μš”μ²­ μ‹œ 전체λ₯Ό ν•œλ²ˆμ— λ“€κ³ μ˜¨λ‹€λ©΄ 응닡 μ‹œκ°„μ΄ κΈΈμ–΄μ§€κ²Œ λ˜λ©΄μ„œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λΆˆνŽΈμ„ μ΄ˆλž˜ν•œλ‹€. μ΄λ•Œ 데이터λ₯Ό νŽ˜μ΄μ§€μ— ν•΄λ‹Ήν•˜λŠ” 개수만큼 μΌλΆ€λ§Œ μž˜λΌμ„œ κ°€μ Έμ˜¨λ‹€λ©΄ μ‹œκ°„μ„ 단좕할 수 μžˆλ‹€. 예λ₯Ό..

Java/Spring 2024.03.26

[Spring] λ¦¬λ‹€μ΄λ ‰μ…˜ν•œ νšŸμˆ˜κ°€ λ„ˆλ¬΄ λ§ŽμŠ΅λ‹ˆλ‹€.

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 SpringBoot 3.2.3 πŸ“Œλ¬Έμ œ μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°λ‘œ νšŒμ› 둜그인 및 둜그인된 μ‚¬μš©μžλ§Œ μ ‘κ·Όν•  수 μžˆλŠ” νŽ˜μ΄μ§€λ₯Ό μ„€μ •ν•˜λ˜ 도쀑 ν•΄λ‹Ή 였λ₯˜λ₯Ό λ°œκ²¬ν•¨. μΏ ν‚€λ₯Ό μ‚­μ œν•΄λ„ λ¬Έμ œκ°€ μ§€μ†μ μœΌλ‘œ λ°œμƒν•˜μ—¬ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 글을 μž‘μ„±ν•œλ‹€. 1. `/`λŠ” 메인 인덱슀둜 λͺ¨λ“  μœ μ €κ°€ μ ‘κ·Όν•  수 있고, `/member/**`λŠ” `MEMBER` κΆŒν•œμ„ κ°€μ§„ μ‚¬μš©μžλ§Œ μ ‘κ·Όν•  수 μžˆλ‹€. 2. `/member`에 μ ‘κ·Όν•  경우 μ‚¬μš©μžκ°€ λ‘œκ·ΈμΈν•˜μ§€ μ•Šμ•˜κ±°λ‚˜ `MEMBER` κΆŒν•œμ΄ μ—†μœΌλ©΄ `/member/login`으둜 νŠ•κ²¨λ‚˜κ°€μ•Ό ν•œλ‹€. μ΄λ•Œ 둜그인 ν•˜μ§€ μ•Šμ€ μ‚¬μš©μžκ°€ `/member`둜 μ ‘κ·Όν•  경우 `/member/login`으둜 κ°€μ§€ μ•Šκ³  μœ„μ™€ 같은 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€. πŸ“Œν•΄κ²° κ²°λ‘ λΆ€..

Java/Spring 2024.03.24

[Spring] μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°(Spring Security)

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 SpringBoot 3.2.3 πŸ“ŒμŠ€ν”„λ§ μ‹œνλ¦¬ν‹°(Spring Security)λž€? 인증(Autentication)κ³Ό 인가(Autorization), 데이터 보호 κΈ°λŠ₯을 ν¬ν•¨ν•˜μ—¬ μ‚¬μš©μžμ˜ κΆŒν•œμ„ 관리할 수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” Spring의 ν”„λ ˆμž„μ›Œν¬. μ•½κ°„μ˜ μ½”λ“œμ™€ μ„€μ •λ§ŒμœΌλ‘œ 둜그인 μ²˜λ¦¬μ™€ μžλ™ 둜그인, 둜그인 ν›„μ²˜λ¦¬ 등을 μ²˜λ¦¬ν•˜μ—¬ κ°œλ°œμžκ°€ λ³΄μ•ˆμ— κ΄€ν•œ κΈ°λŠ₯을 λΉ λ₯΄κ²Œ κ΅¬ν˜„ν•  수 μžˆλ„λ‘ 도와쀀닀. βœ”οΈ 인증(Autentication): 슀슀둜λ₯Ό 증λͺ…함. μ°Έμ΄λΌλŠ” κ·Όκ±°κ°€ μžˆλŠ” 무언가λ₯Ό ν™•μΈν•˜κ±°λ‚˜ ν™•μ¦ν•˜λŠ” ν–‰μœ„. μ‚¬μš©μžκ°€ 슀슀둜λ₯Ό 증λͺ…ν•˜κΈ° μœ„ν•˜μ—¬ μžμ‹ μ˜ 정보(아이디 및 λΉ„λ°€λ²ˆν˜Έ)λ₯Ό μ œκ³΅ν•˜κ³  이λ₯Ό 톡해 인증을 μ™„λ£Œν•˜λŠ” 둜그인 κ°œλ…μ΄ 여기에 μ†ν•œλ‹€. βœ”οΈ 인가(Au..

Java/Spring 2024.03.21

[SpringBoot] Spring Security μ‚¬μš© μ‹œ deprecated

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool πŸ“Œλ¬Έμ œ 2024λ…„ 3μ›” 16일 κΈ°μ€€ μŠ€ν”„λ§ λΆ€νŠΈ 3.2.3버전 ν”„λ‘œμ νŠΈμ—μ„œ μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°μ˜ 적용 κ³Όμ • 도쀑 μ±…κ³Ό ꡬ글링을 톡해 μ°Έκ³ ν•œ μ½”λ“œκ°€ deprecated λ˜μ—ˆλ‹€λŠ” 였λ₯˜μ™€ ν•¨κ»˜ μž‘μ„±λ˜μ§€ μ•ŠλŠ” λΆˆνŽΈμ„ κ²ͺμ–΄ ν•΄λ‹Ή 글을 μž‘μ„±ν•œλ‹€. πŸ“Œν•΄κ²° Spring Security 5.2 μ΄ν›„λ‘œ `Configuration` μž‘μ„± μ‹œ λ©”μ„œλ“œ 체이닝 λŒ€μ‹  λžŒλ‹€μ‹μ„ ν—ˆμš©ν•˜κ³  μžˆλ‹€. Spring Security 6.0 버전 μ΄ν›„λ‘œλŠ” 기쑴의 `WebSecuri..

Java/Spring 2024.03.16

_(underscore)둜 μ—°κ²°λœ uuid와 원본 파일λͺ… μž˜λΌμ„œ λ³΄κ΄€ν•˜κΈ°

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool πŸ“Œλ¬Έμ œ κ²Œμ‹œκΈ€ DTO인 `BoardDTO`λ₯Ό DB에 μ €μž₯ν•˜κΈ° μœ„ν•΄ 엔티티인 `Board`와 `BoardImage`둜 λ³€ν™˜ν•˜κ³ μž ν•œλ‹€. `BoardDTO`λŠ” 파일 이름 `String`이 λ‹΄κΈ΄ `List`λ₯Ό ν•„λ“œλ‘œ κ°€μ§„λ‹€. `BoardImage`λŠ” 각각 uuid, 원본 파일λͺ…, μˆœμ„œμΈ `uuid`, `fileName`, `ord`λ₯Ό ν•„λ“œλ‘œ κ°€μ§€λ©° μƒμœ„ 엔티티인 `Board`λ₯Ό μ°Έμ‘°ν•œλ‹€. 이미지가 ν¬ν•¨λœ κΈ€ μž‘μ„± μ‹œ `BoardDTO`λ₯Ό 파라..

Java/Spring 2024.03.16

[SpringBoot] Swagger UIμ—μ„œ MultipartFile 섀정이 λ˜μ§€ μ•ŠλŠ” 였λ₯˜

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool πŸ“Œλ¬Έμ œ 파일 μ—…λ‘œλ“œ 처리λ₯Ό μ‹œλ„ν•˜λŠ” 도쀑 `Controller`μ—μ„œ νƒ€μž…μ„ MultipartFile둜 μ§€μ •ν–ˆμŒμ—λ„ swagger UIμ—μ„œapplication/json; charset=UTF-8둜 μ„€μ •λ˜λŠ” 문제. package org.zerock.b02.dto; import lombok.Data; import org.springframework.web.multipart.MultipartFile; import java.util.List; @..

Java/Spring 2024.03.15

[SpringBoot/JPA] deleteById에 잘λͺ»λœ 값을 넣어도 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŒ

πŸ“Œν™˜κ²½ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool πŸ“Œλ¬Έμ œ `Reply`λ₯Ό μ‚­μ œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•˜μ—¬ /URI/{rno}에 `DELETE` λ°©μ‹μœΌλ‘œ μ‚­μ œλ₯Ό μš”μ²­ν•¨. `Reply`의 아이디인 `rno`λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— μ‘΄μž¬ν•˜λŠ” μ•„μ΄λ””λ‘œ μ„€μ •ν•  경우 μ •μƒμ μœΌλ‘œ λ™μž‘. κ·ΈλŸ¬λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€μ— μ—†λŠ” 번호둜 μ„€μ •ν•˜κ³  μš”μ²­ν•˜λ©΄ Exception 없이 code 200을 λ°˜ν™˜ λ°›μ•˜μŒ. κΈ°λŒ€ν–ˆλ˜ Exception : `EmptyResultDataAccessException` 500 κ²°κ³Ό: 200 Hibernat..

Java/Spring 2024.03.14

[Spring] Mac M1 μŠ€ν”„λ§λΆ€νŠΈ μ‹€ν–‰ μ‹œ Port 8080 is already in use

ν”„λ‘œμ νŠΈλ₯Ό 이것 저것 μ‹€ν–‰ν•˜κ±°λ‚˜ 껐닀가 μΌ°λŠ”λ° ν¬νŠΈκ°€ λ‹«ν˜€μžˆμ§€ μ•Šμ€ 경우 λ°œμƒν•  수 μžˆλ‹€. 이미 8080 포트λ₯Ό μ‚¬μš© 쀑인데 ν•΄λ‹Ή 포트둜 μ„œλ²„λ₯Ό 올리렀고 μ‹œλ„ν•΄μ„œ λ°œμƒν•˜λŠ” λ¬Έμ œλ‹€. 터미널을 μ—΄κ³  μ‹€ν–‰ 쀑인 포트λ₯Ό κ²€μƒ‰ν•œλ‹€. sudo lsof -PiTCP -sTCP:LISTEN 8080을 죽여버린닀. PID둜 ν•΄λ‹Ή 포트λ₯Ό 닫을 수 μžˆλ‹€. 88579 κ·ΈλŒ€λ‘œ 따라 μΉ˜μ§€ 말고 PID 쳐라 kill -9 88579 μ£½μ—ˆλŠ”μ§€ ν™•μΈν•œλ‹€. sudo lsof -PiTCP -sTCP:LISTEN

Java/Spring 2024.03.13