Programming/Spring 7

[Spring Security] @AuthenticationPrincipal Test Trouble Shooting

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ๋Š” ์ž์ฒด์ ์ธ ํ† ํฐ ์ƒ์„ฑ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์œ ์ € ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ Memcached ์— ์ €์žฅํ•œ ๋’ค ์›น์ธ ๊ฒฝ์šฐ Cookie ๋ฅผ, ์•ฑ์ธ ๊ฒฝ์šฐ Http Header ์— ๋‹ด๊ธด ๊ฐ’์„ ํ†ตํ•ด ์œ ์ € ์ธ์ฆ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์Šค์ผ€์ผ ์•„์›ƒ์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์–ด ์œ ์ € ์ธ์ฆ ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„์—์„œ ํ•จ๊ป˜ ๊ณต์œ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋งŒ, ์œ ์ € ์ธ์ฆ/์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ Filter ๊ฐ€ ์•„๋‹Œ ๋ณ„๋„์˜ ์ธ์ฆ์šฉ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ธ์ฆ ์ฒ˜๋ฆฌ ๋ฉ”์†Œ๋“œ์— @ModelAttribute ๋ฅผ ๋ถ™์—ฌ ๋งค ์š”์ฒญ ๋งˆ๋‹ค ์ธ์ฆ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ์–ด ๋ถˆํ•„์š”ํ•œ ์ž์›์ด ๋‚ญ๋น„๋˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. ๋•Œ๋ฌธ์— Spring Security ์— ์ต์ˆ™์น˜๋„ ์•Š๊ณ , ์–ธ์  ๊ฐ€ ํšŒ์‚ฌ์˜ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ๋น„์‚ฌ์ด๋“œ ์‚ฌ์ด๋“œ ํ”„..

Programming/Spring 2023.04.08

[QueryDSL] NoSuchMethodError Trouble Shooting

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ํ˜„์žฌ QueryDSL 5.0.0 ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ณต์žกํ•œ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ํ…Œ์ด๋ธ”์„ JPA Mapping ์„ ์‚ฌ์šฉํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ๋„ˆ๋ฌด ๋งŽ์€ ์ฟผ๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋˜์–ด ๋ถˆํ•„์š”ํ•œ ์ž์›์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด @Query ์• ๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ์กฐํšŒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ ค ํ–ˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐ˜๋ คํ–ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•ด ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ ํด๋ž˜์Šค๋กœ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์กฐ๊ฑด์˜ ๊ฒฐ๊ณผ๋ฅผ GroupBy ํ•˜์—ฌ ์ž„๋ฒ ๋””๋“œ ํด๋ž˜์Šค์˜ ํ•„๋“œ์— ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ @Query ์• ๋…ธํ…Œ์ด์…˜์€ ๊ตฌํ˜„์ด ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํŠน์ • ์—”ํ‹ฐํ‹ฐ์˜ ๋ ˆํผ์ง€ํ† ๋ฆฌ์— @Query ๋ฅผ ์‚ฌ์šฉํ•ด ์กฐํšŒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๋‹น ๋ ˆํผ์ง€ํ† ๋ฆฌ..

Programming/Spring 2023.02.22

Criteria API

Goal Criteria API CriteriaBuilder CriteriaQuery Criteria API Java Persistence Criteria API ๋Š” JPQL ์˜ ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋Š” ๋Œ€์‹  ๊ฐ์ฒด ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ ์ •์˜ ๊ฐœ์ฒด์˜ ๊ตฌ์„ฑ์„ ํ†ตํ•ด ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. Critera API ์—๋Š” type-restricted mode, non-typed mode ๋กœ ๋‚˜๋‰˜๋ฉฐ, ๋Ÿฐํƒ€์ž„ ์‹œ ๋™์ ์œผ๋กœ ์กฐํšŒ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๋˜ํ•œ Criteria API ๋Š” ๋™์  ์ฟผ๋ฆฌ์—๋งŒ ์‚ฌ์šฉ๋˜์–ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋˜๋Š” Named Query ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋™์  ์ฟผ๋ฆฌ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๊ธฐ์กด์˜ ์ •์  Named Query ์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ด์œ ๋กœ JPA ..

Programming/Spring 2023.01.28

Spring Bean / IoC Container / DI

Goal Spring Bean Spring IoC Container Dependency Injection (DI) Constructor Injection Method Injection Setter Injectio Spring Bean Spring Bean ์œผ๋กœ ๋“ฑ๋ก๋œ ํด๋ž˜์Šค๋Š” IoC Contrainer ์— ์˜ํ•ด ์ƒ์„ฑ๋œ Singleton ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, Bean ์œผ๋กœ ๋“ฑ๋ก๋œ ํด๋ž˜์Šค๋งŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ์ด ์ฃผ์ž…(Dependency Injection)๋˜์–ด ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค. Register Bean @Bean @Bean ์€ @Configuration ์ด ๋ถ™์€ DI ์„ค์ •์šฉ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ, ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด Bean Object ์˜ ์ƒ์„ฑ๊ณผ ์˜์กด ๊ด€๊ณ„..

Programming/Spring 2023.01.21

JPA / Persistence Context / Transactional

Goal JDBC Spring Data JPA Persistence Context JDBC? Spring JDBC ๋ž€ Spring Framework ์™€ DB ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒค๋”์‚ฌ์˜ ์ œํ’ˆ์— ๊ด€๊ณ„์—†์ด DB ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ JDBC ๋Š” Persistence Layer ์™€ ๊ธด๋ฐ€ํ•œ ๊ด€๊ณ„๋ฅผ ๋งบ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ Connection ์„ค์ •ํ•˜๊ฑฐ๋‚˜ Statement ๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ›„ Statement ๋ฅผ ์ง์ ‘ ๋‹ซ์•„์ค˜์•ผ ํ•˜๋Š” ๋“ฑ์˜ ๋ฌธ์ œ์ ์ด ์•ผ๊ธฐ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ค‘๋ณต ์ฝ”๋“œ์˜ ์žฌ์ƒ์‚ฐ์œผ๋กœ ์ธํ•ด ์œ ์ง€๋ณด์ˆ˜์˜ ๋‚œ์ด๋„๊ฐ€ ์ƒ์Šนํ•˜๊ฒŒ ๋œ๋‹ค. Spring Data JPA ORM(Object Relation Mapper) ์ค‘ ํ•˜๋‚˜๋กœ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ Java ์˜ ๊ฐ..

Programming/Spring 2023.01.14

Spring | Spring Framework ?

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ํ•™์›์—์„œ Spring Framework / MyBatis / Maven ์„ ๋ฐฐ์šด์ง€ ์•ฝ ์ผ์ฃผ์ผ ์ •๋„ ์ง€๋‚ฌ๋‹ค. ์ €๋ฒˆ ์ฃผ์—๋Š” ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ / UML ๋“ฑ์— ๋Œ€ํ•ด ์‹œํ—˜์„ ์น˜๋ค˜๊ณ , ๋Œ์•„์˜ค๋Š” ์ฃผ์—๋Š” ์ด๋ฒˆ์ฃผ์— ๋ฐฐ์› ๋˜ ๋‚ด์šฉ๋“ค๋กœ ์‹œํ—˜์„ ๋ณผ ์˜ˆ์ •์ด๋‹ค. ์ˆ˜์—… ์‹œ๊ฐ„์— ๋ฐฐ์› ๋˜ ๋‚ด์šฉ, ์ฑ…์—์„œ ๋‚˜์™”๋˜ ๋‚ด์šฉ, ์—ฌ๋Ÿฌ ๋ธ”๋กœ๊ทธ์—์„œ ๋งํ•˜๋Š” ๋‚ด์šฉ๋“ค์„ Notion ์— ๊ฐœ์ธ์ ์œผ๋กœ ์ •๋ฆฌํ•ด๋‘์—ˆ์ง€๋งŒ, ๋ณต์Šต ๊ฒธ ๋ธ”๋กœ๊ทธ์—๋„ ์ž‘์„ฑํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ๋ช‡ ์ž ์ ์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. (๋งŽ์ด ๋ถ€์กฑํ•œ ๋‚ด์šฉ์ด๋ฉฐ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด๋ฅผ ๋‹ด์€ ๋‚ด์šฉ์ด๋‹ˆ ์ฝ์œผ์‹œ๋Š” ๋ถ„์˜ ํ•„ํ„ฐ๋ง์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์™œ๋ƒ๋ฉด ๋„ˆ๋ฌด ๊ธฐ์ดˆ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๊ธฐ๋„ ํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.) (๊ทธ๋ž˜์„œ ์„ ๋ฐฐ๋‹˜๋“ค์˜ ํƒœํด์€ ์ •๋ง์ •๋ง ํ™˜..

Programming/Spring 2020.08.02

IntelliJ | Spring MVC + Maven ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ (Oracle)

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ํ˜„์žฌ ๊ตญ๋น„ ์ง€์› ํ•™์›์—์„œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๊ณ , ์„ธ๋ฏธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ง‰ ๋งˆ์นœ ์ƒํ™ฉ์ด๋‹ค. ์ด์ œ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋ฐฐ์šฐ๋Š” ์ค‘์ธ๋ฐ, STS ๋ง๊ณ  ๋‹ค๋ฅธ IDE ๋กœ๋„ ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ๋„์ „ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฒ˜์Œ IntelliJ ๋ฅผ ์ ‘ํ–ˆ์„ ๋•Œ Eclipse ์™€๋Š” UI ๋ผ๋˜์ง€ ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ณผ์ •์ด ๋‹ฌ๋ผ ๋งŽ์ด ํ—ค๋งธ๊ณ , ์‚ฌ๋žŒ๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ ์ •๋ณด ์œ ๋ชฉ๋ฏผ ์ƒํ™œ์ด ์กฐ๊ธˆ ๊ธธ์–ด์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์–ด๋–ป๊ฒŒ ์Šคํ”„๋ง MVC + Maven ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ๊ธฐ๋ก ํ•  ๊ฒธ, ๋‚˜ ๊ฐ™์ด ์™„์ „ ์ดˆ๋ณด์ž๊ฐ€ ์ •๋ณด ์œ ๋ชฉ๋ฏผ ์ƒํ™œ์„ ์ฒญ์‚ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ์•„์ฃผ ์ž‘๊ฒŒ๋‚˜๋งˆ ๋„์›€์ด ๋  ๊ฒธ ํ•ด์„œ ๊ธ€์„ ์ ์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ๋‹ค๋“ค IntelliJ ๋Š” ์ž˜ ์„ค์น˜ํ–ˆ์„๊ฑฐ๋ผ๋Š” ๊ฐ€์ • ํ•˜์— ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ฒ˜์Œ์— IntellJ ๋ฅผ ์‹ค..

Programming/Spring 2020.07.26