Java 29

[SpringBoot] Querydsl ์„ค์ • ์‹œ ์˜ค๋ฅ˜

๐Ÿ“Œํ™˜๊ฒฝ Spring boot 3.2.3 Gradle - Groovy Java 17 ์Šคํ”„๋ง๋ถ€ํŠธ 3.0 ์ด์ƒ๋ถ€ํ„ฐ๋Š” ์„ค์ •์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. 3.0 ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ์ฑ…์ด๋‚˜ ๊ฐ•์˜์—์„œ ์„ค๋ช…ํ•˜๋Š” ์„ค์ •์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค. 1. javax ๋Œ€์‹  jakarta๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ `build.gradle`์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. buildscript { ext { queryDslVersion = "5.0.0" } } . . . dependencies { implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta" annotationProcessor( "jakarta.persistence:jakarta.persistence-api", "jakarta.anno..

Java/Spring 2024.03.11

[Spring] summernote ์—๋””ํ„ฐ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ ๊ธ€ ์—…๋กœ๋“œํ•˜๊ธฐ

๐Ÿ“Œ ํ™˜๊ฒฝ Spring Tool Suite 3 (STS3) ์Šคํ”„๋ง ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ ๐Ÿ“Œ ํ๋ฆ„ 1. summernote api๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. 1-1. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ๊ณผ ์ถฉ๋Œ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” summernote lite๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 2. ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•ด `pom.xml`์— `gson` `common-io` `commons-fileupload` ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. 3. `textarea` id๋ฅผ summernote๋กœ ์ž‘์„ฑํ•˜๋ฉด summernote ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ด๋จธ ๋ฏธ์นœ ํƒœ๊ทธ๊ฐ€ ๋™์ž‘ํ•ด๋ฒ„๋ฆผ `` 4. ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์œ„์น˜์— ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์—๋””ํ„ฐ์— summernote์—์„œ ์ œ๊ณตํ•˜๋Š” callbakcs ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 5. ajax๋กœ Controller ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ํŒŒ์ผ..

Java/Spring 2024.02.22

[Spring] ์Šคํ”„๋ง์˜ ์ •์„ (3) - Spring MVC

http์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต ํ”„๋กœํ† ์ฝœ(Protocol)์„œ๋กœ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ์•ฝ์† ๋˜๋Š” ๊ทœ์น™. ์ฃผ๊ณ  ๋ฐ›์„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ˜•์‹์„ ์ •์˜ํ•œ ๊ฒƒ. ๋ณ„๋‹ค๋ฅธ ์„ค๋ช… ์—†์ด๋„ ๊ทœ์น™์„ ์ •ํ•ด๋†“๊ณ  ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์–ด๋–ค ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ.  HTTP(Hyper Text Transfer Protocal)ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ. ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.(๋ฌด์ƒํƒœ. stateless) ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋‹ค.(๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์Œ. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.) ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (์ปค์Šคํ…€ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ฝ์†๋งŒ ๋œ๋‹ค๋ฉด ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.) ์š”์ฒญ์š”์ฒญ ๋ฌธ์„œ๋Š” ํ—ค๋”์™€ ๋ฐ”๋””๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ํ—ค๋”์—๋Š” ๋ณธ๋ฌธ์— ..

Java/Spring 2024.01.01

[Spring] ์Šคํ”„๋ง์˜ ์ •์„ (2) - ์š”์ฒญ๊ณผ ์‘๋‹ต

main ๋ฉ”์„œ๋“œ๋Š” static ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด๋„ main ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ์ปฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์€ main ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋งŒ์œผ๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„๊นŒ?์›๊ฒฉ ํ”„๋กœ๊ทธ๋žจ์€ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ WAS๊ฐ€ ์žˆ์–ด์•ผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. url์— ์ปดํ“จํ„ฐ ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ๋„ฃ์œผ๋ฉด WAS๊ฐ€ ํฌํŠธ๋ฅผ ๋ฐ›์•„ ์„œ๋ฒ„์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด์ค€๋‹ค. => AWS์˜ ์ธ์Šคํ„ด์Šค์— Tomcat์„ ์‹คํ–‰์‹œ์ผœ๋†“๊ณ , ๋‚ด ์ปดํ“จํ„ฐ์—์˜ ๋ธŒ๋ผ์šฐ์ € url์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์˜ ip๊ณผ tomcat ํฌํŠธ ๋ฒˆํ˜ธ์ธ :8080์„ ๋’ค์— ๋ถ™์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ!  `@Controller` ํด๋ž˜์Šค๋ฅผ ์›๊ฒฉ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋“ฑ๋ก`@RequestMapping`  url๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฐ๊ฒฐ..

Java/Spring 2023.12.31

[Spring] ์Šคํ”„๋ง์˜ ์ •์„ (1) ์ดˆ๊ธฐ ์„ค์ •

`rm` ์ง€์šฐ๊ธฐ `ref` rm ์‚ฌ์šฉ์‹œ ํŒŒ์ผ ์ด๋ฆ„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ`sudo` ๊ด€๋ฆฌ์ž ๊ถŒํ•œ`ls` ํ˜„์žฌ ๊ฒฝ๋กœ์— ์žˆ๋Š” ํŒŒ์ผ ์ถœ๋ ฅ`pwd` ํ˜„์žฌ ๊ฒฝ๋กœ ์ถœ๋ ฅ ํ†ฐ์บฃ ์‚ฌ์šฉ ์‹œ ์ž๋ฐ”๊ฐ€ ์–ด๋А ๊ฒฝ๋กœ์— ์žˆ๋Š”์ง€ ์•Œ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— JAVA_HOME์œผ๋กœ jdk๊ฐ€ ๋‹ค์šด๋กœ๋“œ ๋˜์–ด์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.ํ†ฐ์บฃ ์‹คํ–‰ zsh๊ฐ€ ๊น”๋ ค์žˆ์œผ๋ฏ€๋กœ ํ†ฐ์บฃ ์„ค์น˜๋œ ๊ฒฝ๋กœ๋กœ ๊ฐ€์„œ ๋‹ค์Œ ๋ช…๋ น์–ด ์‹คํ–‰./startup.sh  ์ข…๋ฃŒ ๋ช…๋ น์–ด์•„๋‹ˆ๋ฉด ํ„ฐ๋ฏธ๋„ ์ฐฝ ๋‹ซ์•„๋„ ๋จ./shutdown.sh   STS ์‹คํ–‰ ์‹œ์— ์‹คํ–‰ ๋Œ€๊ธฐ ์ด๋ฏธ์ง€๊ฐ€ ๋’ค์ง‘ํ˜€์„œ ๋‚˜์˜ค๋Š”๋ฐ ์ด๊ฑฐ ๊ดœ์ฐฎ์€๊ฑด๊ฐ€? ใ…‹ใ…‹ใ…‹ใ…‹   ํŒŒ์ผ -  ์Šคํ”„๋ง ๋ ˆ๊ฑฐ์‹œํ•˜๊ณ  ํƒฌํ”Œ๋ฆฟ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”๋ฐ ์—†์œผ๋ฉด configure template ๋“ค์–ด๊ฐ€์„œ ๋””ํดํŠธ ๋นผ๊ณ  ๋‹ค ์ง€์šฐ๋ฉด ๋จ  ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์ •ํ•˜๋Š” ๊ฑฐ๋‹ค.com.fastca..

Java/Spring 2023.12.30

[Spring] ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธํŽธ (3)

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‹ฑ๊ธ€ํ†ค ์Šคํ”„๋ง์€ ๊ธฐ์—…์šฉ ์˜จ๋ผ์ธ ์„œ๋น„์Šค ๊ธฐ์ˆ ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํƒ„์ƒํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณดํ†ต ์—ฌ๋Ÿฌ ๊ณ ๊ฐ์ด ๋™์‹œ์— ์š”์ฒญ์„ ํ•œ๋‹ค. Configurationpublic class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderServ..

Java/Spring 2023.12.28

[Spring] ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธํŽธ (2)

๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์Šคํ”„๋ง์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค. @Configurationpublic class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy())..

Java/Spring 2023.12.27

[Spring] ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธํŽธ (1)

https://start.spring.io/ ์—์„œ ์‹œ์ž‘ ํŒŒ์ผ ์ƒ์„ฑ(dependency X)์ž๋ฐ” 21๋กœ ํ•˜๋ฉด ์˜ค๋ฅ˜๋‚˜๋‹ˆ๊นŒ 17๋กœ~!!  setting - gradle - gradle prijects - build and run ์ธํ…”๋ฆฌ์ œ์ด๋กœ ๋ฐ”๊พธ๊ธฐ(gradleํ†ตํ•ด์„œ ์‹คํ–‰ํ•˜๋ฉด ๋А๋ฆผ) ๋‹จ์ถ•ํ‚ค ํ™•์ธsetting - keymap ์‹ค๋ฌด์—์„œ๋Š” ๊ทธ๋ƒฅ ํ•ด์‹œ๋งต๋Œ€์‹  `concurrentHashMap`์„ ์‚ฌ์šฉํ•œ๋‹ค (๋™์‹œ์„ฑ ์ด์Šˆ) ์ธํ…”๋ฆฌ์ œ์ด ๋‹จ์ถ•ํ‚ค command shft enter (๋ฌธ์žฅ ์ž๋™์™„์„ฑ ๋‹จ์ถ•ํ‚ค)command + option + V (์ฐธ์กฐ๋ณ€์ˆ˜ ์ž๋™์ƒ์„ฑ)option + Enter (์ž„ํฌํŠธ ๋“ฑ ์˜ค๋ฅ˜๋‚œ ๊ณณ์œผ๋กœ ์ด๋™)command + shifh + T (ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ)command + E + Enter (์ด์ „ ์ฐฝ์œผ๋กœ ๋Œ์•„..

Java/Spring 2023.12.27

[JAVA] ๊ธฐ๋ณธ ์ •๋ ฌ ๋Œ€์‹  ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

Comparator์™€ Comparable ์ •๋ ฌ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ โ‘ ๋Œ€์ƒ โ‘ก๊ธฐ์ค€ ๋‘๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Arrays์™€ Collections ํด๋ž˜์Šค์˜ sort() ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ๊ณผ ์ •๋ ฌ ๊ธฐ์ค€์„ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋ฐ˜ํ™˜๊ฐ’ ์—†์ด ๋‚ด๋ถ€์—์„œ ์ •๋ ฌํ•œ๋‹ค. // import java.util.Arrays Integer[] intArr = {3, 6, 2, 1, 4, 5}; Arrays.sort(intArr); // intArr = [1, 2, 3, 4, 5, 6] ์ด๋•Œ ์ •๋ ฌ ๊ธฐ์ค€ ์—†์ด ๋Œ€์ƒ๋งŒ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ๊ฐ ํด๋ž˜์Šค์— ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ, Arrays์™€ Collections๋Š” (์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ์ฒ˜๋Ÿผ ์ˆœ์„œ๋กœ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด๋ผ๋ฉด) ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„๋˜์–ด์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ๋œ..

Java 2023.12.12