์ธ๋„ค์ผ [SpringBoot] H2 Database CSV ๋ฐ์ดํ„ฐ Import ํ•˜๊ธฐ SpringBoot 2.7.2 , Java11 ์‚ฌ์šฉ 1. H2 Database ์‚ฌ์šฉ ์„ค์ • - build.gradle dependencies { ... // https://mvnrepository.com/artifact/com.h2database/h2 implementation group: 'com.h2database', name: 'h2', version: '2.1.214' // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jdbc implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jdbc', versi..
์ธ๋„ค์ผ [SpringBoot] Swagger ui 3.0 ์—ฐ๋™ํ•˜๊ธฐ 1. Swagger 3.0 ์„ธํŒ…ํ•˜๊ธฐ. ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด์„œ ๋‚˜์˜จ ์Šค์›จ๊ฑฐ ์„ธํŒ… ๊ด€๋ จ ํฌ์ŠคํŠธ๋Š” ๋Œ€๋ถ€๋ถ„ 2.X ๋ฒ„์ „๋Œ€ ์ด๊ฑฐ๋‚˜, 3.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ›์•˜์Œ์—๋„, ์Šค์›จ๊ฑฐ ์„ธํŒ…์—์„œ SWAGGER2๋ฒ„์ „์œผ๋กœ ๋‚ฎ์ถ”์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ธ€์ด ํ˜ผ์žฌํ•˜์—ฌ ์ •๋ฆฌํ•˜๊ณ ์ž ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. ์šฐ์„  ๋‚ด๊ฐ€ ์ ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋ฒ„์ „์€ 2.7.1 ๋ฒ„์ „์ด๋ฉฐ, ์Šค์›จ๊ฑฐ๋Š” open api 3.0 OAS3 ๋ฌธ์„œ ๋ฒ„์ „์„ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค. - build.gradle // https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' // http..
์ธ๋„ค์ผ [SpringBoot] Rest Api Sample ๋งŒ๋“ค๊ธฐ #2 https://lucete-stellae.tistory.com/96 [SpringBoot] Rest Api Sample ๋งŒ๋“ค๊ธฐ #1 ๊ธฐ์กด์— ๊ธ‰ํ•˜๊ฒŒ ์ง„ํ–‰ํ•œ ์‚ฌ๋‚ด SMS API ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚˜์„œ, ์ •๋ฆฌ๋„ ํ•  ๊ฒธ ์ƒ˜ํ”Œ๋กœ REST API ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ฒ„์ „ ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ์„ธํŒ… JDK11 Spring Bo lucete-stellae.tistory.com #1์— ์ด์–ด์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค. API ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ๋ถ€ํ„ฐ ์ •์˜ํ•ด๋ณด์ž ์„œ๋น„์Šค ๋กœ์ง ๋‚ด์—์„œ Exception ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ. ๋กœ์ง ์™ธ ์ ์ธ ๋ถ€๋ถ„ ( ์ž˜๋ชป๋œ URL ํ˜ธ์ถœ, ๋“ฑ ) ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ. ์œ„ ๋‘๊ฐ€์ง€ ์ผ€์ด์Šค์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„, ๋™์ผํ•œ ํฌ๋งท์œผ๋กœ ๋‚˜๊ฐ€๊ฒŒ..
์ธ๋„ค์ผ [SpringBoot] Rest Api Sample ๋งŒ๋“ค๊ธฐ #1 ๊ธฐ์กด์— ๊ธ‰ํ•˜๊ฒŒ ์ง„ํ–‰ํ•œ ์‚ฌ๋‚ด SMS API ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚˜์„œ, ์ •๋ฆฌ๋„ ํ•  ๊ฒธ ์ƒ˜ํ”Œ๋กœ REST API ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ฒ„์ „ ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ์„ธํŒ… JDK11 Spring Boot 2.7.1 Gradle 7.4.1 (Project Initialize > VS Code Spring Extension > Create a Gradle Project) ๊ทธ๋ฆฌ๊ณ  Build.gradle ์— ์ถ”๊ฐ€ํ•œ dependency ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.pr..
์ธ๋„ค์ผ [SpringBoot] CORS ์ฒ˜๋ฆฌํ•˜๊ธฐ 2022.07.06 - 2์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€๋œ ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://lucete-stellae.tistory.com/98 SpringBoot 2.7+ CORS ์ด์Šˆ ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“  API ์„œ๋ฒ„๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ์ปฌ์—์„œ ๋Œ๋ฆฌ๋˜ ๋„์ค‘ ํ•ด๋‹น ์ด์Šˆ๋ฅผ ๋งŒ๋‚ฌ๋‹ค. ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. localhost:8080/users - SpringBoot API Server ์—์„œ ์œ ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ด. localhost:8090/index.html.. lucete-stellae.tistory.com 1. Global WebConfig import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet..
์ธ๋„ค์ผ [AOP] AOP Aspect ๋ฅผ ์ด์šฉํ•œ ๋กœ๊ทธ ์ฒ˜๋ฆฌ ํ•˜๊ธฐ AOP ๋ฐ ๊ตฌ์„ฑ์š”์†Œ ๊ฐ„๋‹จ ์„ค๋ช… ์Šคํ”„๋ง ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ธ AOP ๋Š” ๋กœ์ง์„ ๊ด€์‹ฌ์‚ฌ(Aspect)๋ผ๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. OOP์—์„œ ๋ชจ๋“ˆํ™”์˜ ํ•ต์‹ฌ ๋‹จ์œ„๋Š” ํด๋ž˜์Šค์ธ ๋ฐ˜๋ฉด, AOP์˜ ๋ชจ๋“ˆํ™” ๋‹จ์œ„๋Š” Aspect ์ž…๋‹ˆ๋‹ค. ์ข…์†์„ฑ ์ฃผ์ž…์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ์ฒด๋ฅผ ์„œ๋กœ ๋ถ„๋ฆฌํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๊ณ , AOP๋Š” ๊ฐœ์ฒด์™€ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. [์šฉ์–ด ์„ค๋ช…] Aspect - ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ, ์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๊ธˆ ์ž‘์„ฑํ•˜๋ คํ•˜๋Š” ๋กœ๊น…์„ ์œ„ํ•œ ๋ชจ๋“ˆ์„ ๋กœ๊น…์„ ์œ„ํ•œ Aspect ๋ผ๊ณ  ํ•œ๋‹ค. Join Point - AOP ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์œ„์น˜ Advice - ๋ฉ”์†Œ๋“œ ์‹คํ–‰ ์ „์ด๋‚˜ ํ›„์— ์ทจํ•ด์•ผ ํ•  ์‹ค์ œ ์กฐ์น˜ Point Cut - Advice๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ Join P..
์ธ๋„ค์ผ [Spring Boot] ํŒŒ์ผ ์—…๋กœ๋“œ ๋งŒ๋“ค๊ธฐ -4- https://lucete-stellae.tistory.com/80 [Spring Boot] ํŒŒ์ผ ์—…๋กœ๋“œ ๋งŒ๋“ค๊ธฐ -3- https://lucete-stellae.tistory.com/78 ์ง€๋‚œ๋ฒˆ์— ์ด์–ด์„œ ํŒŒ์ผ ์—…๋กœ๋“œ ํ•จ์ˆ˜์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•˜์˜€๋‹ค. 1. ํŒŒ์ผ ์—…๋กœ๋“œ ํ•จ์ˆ˜์˜ ๊ณตํ†ตํ™” 2. ํŒŒ์ผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ (์‚ฌ์ด์ฆˆ,ํ™•์žฅ์ž) 3. ํŒŒ์ผ ์ด๋ฆ„ ์•”ํ˜ธํ™” 4. ํŒŒ์ผ ์ €์žฅ ์œ„์น˜๋ฅผ lucete-stellae.tistory.com ์ง€๋‚œ ๊ฒŒ์‹œ๊ธ€์— ์ด์–ด์„œ, ํŒŒ์ผ ์—…๋กœ๋“œ ๊ด€๋ จ ์ž‘์—…์„ ๋‹ค์‹œ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ด๋ฒˆ์— ์ค‘์ ์„ ๋‘” ๊ฒƒ์€ ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ ์ง€์›์ด๋‹ค. ํ•ด๋‹น ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅธ Boot ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ํ•ด๋‹น ์„œ๋น„์Šค์—์„œ๋Š” ํŒŒ์ผ ์—…๋กœ๋“œ ํ›„ ์—…๋กœ๋“œํ•œ ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฆฌํ„ดํ•˜์—ฌ, ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•ด์ฃผ์–ด์•ผ ํ–ˆ๊ธฐ์— ์ด๋ฒˆ ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ..
์ธ๋„ค์ผ [Spring Boot] ํŒŒ์ผ ์—…๋กœ๋“œ ๋งŒ๋“ค๊ธฐ -3- https://lucete-stellae.tistory.com/78 ์ง€๋‚œ๋ฒˆ์— ์ด์–ด์„œ ํŒŒ์ผ ์—…๋กœ๋“œ ํ•จ์ˆ˜์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•˜์˜€๋‹ค. 1. ํŒŒ์ผ ์—…๋กœ๋“œ ํ•จ์ˆ˜์˜ ๊ณตํ†ตํ™” 2. ํŒŒ์ผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ (์‚ฌ์ด์ฆˆ,ํ™•์žฅ์ž) 3. ํŒŒ์ผ ์ด๋ฆ„ ์•”ํ˜ธํ™” 4. ํŒŒ์ผ ์ €์žฅ ์œ„์น˜๋ฅผ ํƒ€์ž…์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ ๋ฐ ๋‚ ์งœ๋ณ„๋กœ ํด๋” ๊ตฌ๋ถ„ํ•˜๊ธฐ - FIleUtil.java package com.file.example.util; import java.io.File; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.time.L..
์ธ๋„ค์ผ [Spring Boot] ํŒŒ์ผ ์—…๋กœ๋“œ ๋งŒ๋“ค๊ธฐ -2- ์ด๋ฒˆ์— ์ง„ํ–‰ํ•œ ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๊ฒŒ, ์—…๋กœ๋“œ ๋œ ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ DB์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๋ณ„๋‹ค๋ฅธ ๋กœ์ง์€ ์—†๊ณ  ๋‹จ์ˆœ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ DB์— ์ €์žฅํ•œ๋‹ค. - build.gradle : DB๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ (DB๋Š” Docker ๋ฒ ์ด์Šค์˜ Postgres ์‚ฌ์šฉ) plugins { id 'org.springframework.boot' version '2.6.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'war' } group = 'com.file' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencie..
์ธ๋„ค์ผ [Spring Boot] ํŒŒ์ผ ์—…๋กœ๋“œ ๋งŒ๋“ค๊ธฐ -1- ๋Š˜ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ง์ ‘ ๋งŒ๋“ค์–ด ๋ณด์ง€๋Š” ๋ชปํ–ˆ๋˜ ํŒŒ์ผ ์—…๋กœ๋“œ ๋งŒ๋“ค๊ธฐ๋ฅผ ํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์ž‘์—… ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. Java 11 2. Spring Boot 2.6.4 3. Gradle 7.2 4. War ๋ฐฐํฌ ์‚ฌ์šฉ FileUpload / Download ์„œ๋น„์Šค๋Š” ๋‹ค์Œ์„ ์ „์ œ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ๋กœ ํ•œ๋‹ค. 1. Front์—์„œ MultipartRequest๋กœ ํŒŒ์ผ ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค. ํผ ํƒœ๊ทธ ๋‚ด์—์„œ Submitํ•˜๋Š” ๋ฐฉ์‹์„ ์šฐ์„ ์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค. 2. Back์—์„œ๋Š” ์ด๋ฅผ ๋ฐ›์•„ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ , ๊ด€๋ จ ์ •๋ณด๋ฅผ DB์— ์ €์žฅํ•œ๋‹ค. 3. ์„œ๋ฒ„ ๊ฒฝ๋กœ์— ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—๋Š” ํ™•์žฅ์ž ๋“ฑ์— ๋Œ€ํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋Š” ์‹ค์‹œ ํ•œ๋‹ค. 4. ํŒŒ์ผ ์—…๋กœ๋“œ๋Š” ๋‹ค์ค‘ ์—…๋กœ๋“œ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜๋ฉฐ, ํ•„์š” ์‹œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋กœ๋“œ ํ•œ๋‹ค. 5. ์ถ”ํ›„, 1-4 ๊ตฌํ˜„ ์‹œ..
์ธ๋„ค์ผ [Spring Boot] Tiles ์‚ฌ์šฉํ•˜๊ธฐ. 1. build.gradle ์ถ”๊ฐ€ // tiles implementation group: 'org.apache.tiles', name: 'tiles-jsp', version: '3.0.5' 2. tiles.xml ์„ค์ • ํŒŒ์ผ ์ถ”๊ฐ€ webapp/WEB-INF/tiles/ ์— tiles.xml ์„ค์ •ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ. main์ด๋ผ๋Š” ์ •์˜๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ํ—ค๋”/๋„ค๋น„๊ฒŒ์ด์…˜/ํ‘ธํ„ฐ์˜ ์†์„ฑ์„ ๋งŒ๋“ค๊ณ  ํŒŒ์ผ์„ ์ง€์ •ํ–ˆ๋‹ค. ํ•˜์œ„์—๋Š” *.main.jsp ๋ผ๋Š” ์š”์ฒญ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌํ•  ์ปจํ…์ธ  ์†์„ฑ์„ ์ง€์ •ํ–ˆ์œผ๋ฉฐ main์—์„œ ํ™•์žฅ๋œ ์ •์˜์ด๋‹ค. {1}์˜ ์˜๋ฏธ๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด, index.main.jsp ํŒŒ์ผ์„ ์ฐพ๋Š” ๊ฒฝ์šฐ {1}์—๋Š” ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ index๊ฐ€ ๋งคํ•‘ ๋˜์–ด index.jsp ํŒŒ์ผ์„ ์ฐพ๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •์˜์— /comm/mem..
์ธ๋„ค์ผ [Spring Boot] Tag Library ์‚ฌ์šฉํ•˜๊ธฐ 1. TagLibrary build.gradle ์ถ”๊ฐ€ // taglibs implementation group: 'org.apache.taglibs', name: 'taglibs-standard-impl', version: '1.2.5' 2. tld ์„ค์ • ํŒŒ์ผ ์ถ”๊ฐ€ WEB-INF/tlds ํด๋”์— ์‚ฌ์šฉํ•  ์ปค์Šคํ…€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ ์ƒ์„ฑ JSTL functions 1.2.5 cLibrary http://java.sun.com/jsp/jstl/functions {์‚ฌ์šฉํ•  ์ด๋ฆ„} {์‚ฌ์šฉํ•  ํด๋ž˜์Šค ํŒŒ์ผ ์œ„์น˜( com.demo.lib.name )} {ํด๋ž˜์Šค ํŒŒ์ผ ๋‚ด ๋ฆฌํ„ดํƒ€์ž… + ๋ฉ”์†Œ๋“œ ๋ช…( String getString() )} 3. ์‚ฌ์šฉ์˜ˆ์‹œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” jsp ํŒŒ์ผ ๋‚ด๋ถ€ ์ƒ๋‹จ์— ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉ usage : $..