๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 76

[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

[JavaScript] ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง„ ๋ฒ„ํŠผ ํ•œ๋ฒˆ์— eventListener ์„ค์ •ํ•˜๊ธฐ

const buttons = document.querySelectAll(".customBtn"); buttons.forEach(function (customBtn) { customBtn.addEventListener("click", function() {// ์—ฌ๊ธฐ์— ํด๋ฆญ ์‹œ ์ด๋ฒคํŠธ ๊ตฌํ˜„ } }}  `querySelectAll()`๋กœ ๋ชจ๋“  ๋ฒ„ํŠผ์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋ฒ„ํŠผ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.`forEach()` ํ•จ์ˆ˜ ๋‚ด์—์„œ `addEventListener()`๋ฅผ ์ ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค.  ๐Ÿ“Œ์‘์šฉ๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค.๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค.  ์ด๋ ‡๊ฒŒ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง„ ๋ฒ„ํŠผ์ด ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•  ๋•Œ ๋ชจ๋‘ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.  con..

JavaScript 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

[SpringBoot] ์Šคํ”„๋ง ๋ถ€ํŠธ 3.2.3์—์„œ Swagger(springdoc) ์‚ฌ์šฉํ•˜๊ธฐ!

๐Ÿ“Œํ™˜๊ฒฝ 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 ์ด์ „ ๊ธ€์—์„œ springfox ๋Œ€์‹  springdoc์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. springfox์™€ springdoc๋Š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ฐจ๊ทผ์ฐจ๊ทผ ๋”ฐ๋ผ๊ฐ€๋˜ ์ฑ…์ด๋‚˜ ๊ฐ•์˜์—์„œ springfox๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ง„ํ–‰์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜ ์—ญ์‹œ ๊ทธ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. ๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•œ ์ฑ…(์ž๋ฐ” ์›น ๊ฐœ๋ฐœ ์›Œํฌ๋ถ)์—์„œ๋Š” REST ๋ฐฉ์‹์œผ๋กœ ๋Œ“๊ธ€์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด `ReplyDTO`๋ฅผ ๋งŒ๋“ค๊ณ , JSON์œผ๋กœ swagge..

Java/Spring 2024.03.13