๐Ÿ“˜ Web/Spring, JPA 13

[Spring] CORS ์„ค์ •

๋ฐฑ์—”๋“œ์™€ ํ”„๋ก ํŠธ์—”๋“œ์˜ ์ถœ์ฒ˜๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ, CORS(Cross-Origin Resource Sharing) ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž์›์„ ๊ณต์œ ํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ์ถœ์ฒ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ด๋ฅผ ์ œํ•œํ•œ๋‹ค. ์ด๋ฅผ SOP(Same Origin Policy) ์ •์ฑ…์ด๋ผ๊ณ  ํ•œ๋‹ค. ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ์•„๋ฌด ์„ค์ •์„ ํ•˜์ง€ ์•Š์œผ๋ฉด SOP ์ •์ฑ…์„ ๋”ฐ๋ฅธ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๋ฐฑ์—”๋“œ ์ชฝ์— CORS ์„ค์ •์„ ํ•ด์„œ ๋‚ด๊ฐ€ ํ—ˆ์šฉํ•œ origin ์ถœ์ฒ˜๋งŒ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“’ ์ถœ์ฒ˜๋ž€? ํ”„๋กœํ† ์ฝœ://๋„๋ฉ”์ธ:ํฌํŠธ ex) http://localhost:8080 ์Šคํ”„๋ง์—์„œ CORS๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค. 1. WebMvcConfigurer ์‚ฌ์šฉ (๊ธ€๋กœ๋ฒŒ ์„ค์ •) : WebMvcConfigure..

[JPA] @Entity, @Table, @Id, @GeneratedValue ์–ด๋…ธํ…Œ์ด์…˜

@Entity : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ๋Œ€์‘ํ•˜๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•จ ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋Š” JPA์—์„œ ๊ด€๋ฆฌ name ์†์„ฑ์ด ์žˆ๋‹ค. (@Entity(name="UserInfo")) JPA๋Š” JPQL์ด๋ผ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ…Œ์ด๋ธ”๋ช…์ด ์•„๋‹Œ ์—”ํ‹ฐํ‹ฐ์˜ ์ด๋ฆ„์ด ์‚ฌ์šฉ๋œ๋‹ค. (select c from UserInfo c where c.id = 1; ์ด๋Ÿฐ ์‹) ์ฃผ์˜๐Ÿ–๏ธ : ๊ธฐ๋ณธ ์ƒ์„ฑ์ž(ํŒŒ๋ผ๋ฏธํ„ฐX) ํ•„์ˆ˜. ์ ‘๊ทผ ์ œ์–ด์ž๋Š” public, protected ์ €์žฅ ํ•  ํ•„๋“œ์— final์„ ๋ถ™์ด๋ฉด ํ…Œ์ด๋ธ”์— ๋งคํ•‘๋˜์ง€ ์•Š๋Š”๋‹ค. @Table : ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ” ์ง€์ • @Id : pk๋ฅผ ์ง์ ‘ ์…‹ํŒ… @GeneratedValue : DBMS ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋งž์ถฐ ์ž๋™์ ์œผ๋กœ ๊ฐ’์„ JPA์—์„œ ์ƒ์„ฑํ•ด ์ž…๋ ฅํ•ด์ค€๋‹ค..

[Spring] AOP ์‚ฌ์šฉ ์˜ˆ์ œ - AOP class ๊ตฌํ˜„

AOP๋Š” IOC, DI, DL๊ณผ ๋”๋ถˆ์–ด ์Šคํ”„๋ง์˜ ๋Œ€ํ‘œ์ ์ธ ํŠน์„ฑ์ด๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ๊ณตํ†ต์ ์ธ ์š”์†Œ๋‚˜ ๋ฐ˜๋ณต๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” ์š”์†Œ๋ฅผ ํ•œ ๊ณณ์— ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๋Š” ๊ด€์  ์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. method๊ฐ€ ์‹คํ–‰๋ ๋•Œ๋งˆ๋‹ค method์˜ parameter์™€ method return value๋ฅผ console์— ์ฐ๋Š” AOP๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž (๊ธฐ์กด์— ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋˜ ํ”„๋กœ์ ํŠธ์— ๋„ฃ์–ด๋ณด์•˜๋‹ค) ๊ทธ ์ „์—ใ…กํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด, AOP ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ์Šคํ”„๋ง annotaion์— ๋Œ€ํ•ด ์•Œ์•„์•ผํ•œ๋‹ค. @Aspect AOP ํด๋ž˜์Šค ์ •์˜ ์‹œ ์‚ฌ์šฉ @Pointcut AOP ๊ธฐ๋Šฅ์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค @Before ๋ฉ”์†Œ๋“œ ์‹คํ–‰ ์ „ @After ๋ฉ”์†Œ๋“œ ์‹คํ–‰(์„ฑ๊ณต) ํ›„ @AfterReturning ๋ฉ”์†Œ๋“œ๊ฐ€ ์ •์ƒ ..

๋ฐ˜์‘ํ˜•