๐ก JWT + SpringSecurity๋ฅผ ์ฌ์ฉํ์ฌ ํ์๊ฐ์
Rest API ๊ตฌํ โก๏ธ 2ํ ๋ฐ๋ก๊ฐ๊ธฐ: JWT ๋ก๊ทธ์ธ ๋ฐ ํ์ ์ ๋ณด ์กฐํ โก๏ธ 3ํ ๋ฐ๋ก๊ฐ๊ธฐ: Refresh Token ๊ฐ๋ฐํ๊ฒฝ SpringBoot 3.1.4 kotlin / java 17 MariaDB ๊ธฐ๋ณธ JPA ์ค์ ์ ๋ค๋ฃจ์ง ์๋๋ค. ๋ฏธ๋ฆฌ ์ค์ ํ ์ํ์ ํ๋ก์ ํธ์์ ๊ฐ์ !!! 1. build.gradle.kts ์ค์ dependencies { ... implementation("org.springframework.boot:spring-boot-starter-security") implementation("io.jsonwebtoken:jjwt-api:0.11.5") runtimeOnly("io.jsonwebtoken:jjwt-impl:0..
๐ป ๊ฐ๋ฐ ์ผ์ง/SpringBoot
Scavenger๋? Naver DEVIEW 2023 - ๋น์ ์ ์ฝ๋๋ ์๊ฐ๋ณด๋ค ๋ง์ด ์ฃฝ์ด์๋ค. ๋ฐํ์์ | GITHUB GitHub - naver/scavenger: A runtime dead code analysis tool A runtime dead code analysis tool. Contribute to naver/scavenger development by creating an account on GitHub. github.com - ๋ฐํ์ Dead Code ๋ถ์ ๋๊ตฌ - ๋ฉ์๋ ํธ์ถ ๊ธฐ๋ก์ ์์งํ์ฌ ์๊ฐํ - Java Agent ๋ฐฉ์ ์ฌ์ฉ => ์ ์ง๋ณด์ ์ฉ์ด, ์ปดํ์ผ ๋ฐ ํ
์คํธ ์๋ ํฅ์! ์ปดํฌ๋ํธ - Agent: ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ์ค์บํ๊ณ , ์ดํ๋ฆฌ์ผ์ด์
๋ด ๋ฉ์๋ ํธ์ถ ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก Co..
Caffeine Cache ๋? ๋ก์ปฌ์บ์๋ ํด๋น ๊ธฐ๊ธฐ์์๋ง ์ฌ์ฉ๋๋ ์บ์์ด๋ค. ์๋๊ฐ ๋น ๋ฅด์ง๋ง ๋ถ์ฐ ์์คํ
์ผ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ด ๊นจ์ง ์ ์๋ค. ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ด๋์ ๋๊น์ง ์ ํฉ์ฑ์ ๋ง์ถฐ์ผํ ์ง, ์ผ๋ง๋ ์๋๊ฐ ์ค์ํ ์ง์ ๋ฐ๋ผ ์บ์๋ฅผ ์ ํํ๋ค. Caffeine Cache๋ java ์บ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ๋์ ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ์บ์์ด๋ค. Caffeine์ Window TinyLfu eviction ์ ์ฑ
์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด๋ ์ต์ ์ ์ ์ค๋ฅ ์ ์ ๊ณตํ๋ค. Setting build.gradle.kts dependencies { implementation("org.springframework.boot:spring-boot-starter-cache") implementation("com.github.b..
์์ ๊ฐ์ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๊ฐ์ฒด๋ก ๋ณํ ๊ธฐ๋ํ ๊ฐ์ฒด ํ์์ ์๋์ ๊ฐ๋ค. Payload(id = "...", payload = List(Map("..." to "...")) ์๋ ์ฝ๋๋ก ํ์ฑ ์งํ /* build.gradle.kts */ implementation("com.fasterxml.jackson.module:jackson-module-kotlin") /* parsing logic */ jacksonObjectMapper().readValue(msg, PayLoad::class.java) ํ์ง๋ง com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayL..