Spring(65)
-
Spring์์ ์ฌ์ฉํ๋ RestTemplate , OkHttp, REST API ์์ ์ฌ์ดํธ
1๏ธโฃ RestTemplate๋? ์คํ๋ง์์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก http ํต์ ์ ์ ์ฉํ๊ฒ ์ธ ์ ์๋ ํ ํ๋ฆฟ์ด๋ค. REST API๋ฅผ ํธ์ถํ ์ ์๋ Spring ๋ด์ฅ ํด๋์ค๋ก REST API ํธ์ถ์ดํ ์๋ต๋ฐ์ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋๊ธฐ๋ฐฉ์์ด๋ค. OkHttp๋? REST API, HTTP ํต์ ์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ง ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. Okhttp ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด REST api, Http ๊ธฐ๋ฐ์ ์์ฒญ, ์๋ต์ ์ฒ๋ฆฌํ ์ ์๋ค. //okhttp implementation 'com.squareup.okhttp3:okhttp:4.9.3' -> build.gradle์ ์ถ๊ฐํด์ฃผ๊ณ refresh ํด์ค๋ค. -> Spring boot๋ RestTemplate + Okhttp ์ฐ๊ฒฐํ์ ์ฌ์ฉํด์ ๋ฉ์์ง๋ฅผ ..
2022.06.28 -
Jackson ObjectMapper๋?
1๏ธโฃ ObjectMapper๋? Json ์ปจํ ์ธ ๋ฅผ Java ๊ฐ์ฒด๋ก deserialzation ํ๊ฑฐ๋ Java ๊ฐ์ฒด๋ฅผ Json์ผ๋ก serealizationํ ๋ ์ฌ์ฉํ๋ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด๋์ค์ด๋ค. 2๏ธโฃ ObjectMapper.writeValue() : Java -> Json ObjectMapper์ writeValue()๋ Java ๊ฐ์ฒด๋ฅผ Json ์ถ๋ ฅ์ผ๋ก ์ง๋ ฌํํ ์ ์๋ค. ๊ฐ๋จํ ์ค์ต์ ์ํด ์ง๋ ฌํ ๋๋ ์ญ์ง๋ ฌํ ํ ๊ฐ์ฒด๋ก ๋๊ฐ์ ํ๋๊ฐ ์๋ User ํด๋์ค๋ฅผ ์์ฑํ๋ค. ObjectMapper๋ ์์ฑ ๋น์ฉ์ด ๋น์ธ๊ธฐ ๋๋ฌธ์ bean์ผ๋ก ๋ฑ๋ก ๋๋ static ์ผ๋ก ์ฒ๋ฆฌํ๋๊ฒ ์ข๋ค๊ณ ํ๋ค.. writeValue()๋ฅผ ์ฌ์ฉํ ๋๋ ex) writeValue(new File("user.json"..
2022.06.22 -
[Spring] @Async๋ฅผ ํ์ฉํ ๋น๋๊ธฐ ๋ฉ์๋ ๋ง๋ค๊ธฐ
https://spring.io/guides/gs/async-method/ Creating Asynchronous Methods this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team spring.io Spring์์ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํด์ค ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก @Async๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง์ ๋ํด์ ํ์ตํ๋ค. ๊ฐ์ด๋์์๋ GitHub ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฟผ๋ฆฌํ๊ณ GitHub์ API๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ์กฐํ ์๋น์ค๋ฅผ ๋น๋ํ๋ค. CompletableFuture๋ ์ฌ๋ฌ ๋น๋๊ธฐ ์์ ์ ํ..
2022.06.20 -
Spring boot + h2 database ์ฌ์ฉ, h2 ์ค์น
https://start.spring.io/ ์ด ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ๊ฐํธํ๊ฒ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์๋ค! db ์ ๊ทผ ๊ธฐ์ ์ ๊ณต๋ถํ๊ธฐ ์ํด ํ ์คํธ์ฉ์ผ๋ก ๋ง์ด ์ฐ์ด๋ db์ธ h2 Database๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค. Java : 11 Packaging : Jar Project: Gradle Project Spring boot : 2.6.6 ์์กด์ฑ์ lombok, jdbc api, h2 database ๋ฅผ ์ถ๊ฐํ๊ณ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์คํธ์์๋ lombok์ ์ฌ์ฉํ๊ธฐ ์ํด์ ์์กด์ฑ์ ์ถ๊ฐํด์ค๋ค. h2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Ja..
2022.04.13 -
[์คํ๋ง๋ถํธ] jar ํ์ผ๋ก ๋ฐฐํฌํ๊ธฐ
Spring boot ๋ฅผ ์ฌ์ฉํด์ ์น ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๊ณ ํ๋ก์ ํธ๋ฅผ jar ๋๋ war ํ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ค. ์ด๋ jar์ war์ ์ฐจ์ด๋ ์คํ๋ง๋ถํธ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฐ์บฃ ์๋ฒ๊ฐ ๋ด์ฅ๋์ด์๋๋ฐ ๋ด์ฅ๋ ์๋ฒ๋ฅผ ํฌํจํ์ฌ ๋ฐฐํฌํ ๊ฒ์ด๋ผ๋ฉด jarํ์ผ๋ก ๋ฐฐํฌํ๊ณ , ์น ์๋ฒ๋ฅผ ๋ฐ๋ก ๊ตฌ์ถํ ๊ฒฝ์ฐ์๋ ์คํ๋ง๋ถํธ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ๋ฐฐํฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ war ํ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ค. ์ผ๋จ ๋๋ ๋ฐ๋ก ์น์๋ฒ๋ฅผ ๊ตฌ์ถํ์ง ์์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ jarํ์ผ๋ก ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ดค๋ค! ๋จผ์ IntelliJ๋ฅผ ์ฌ์ฉํ๊ณ , gradle ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์๋ค. 1๏ธโฃ cmd ์ฐฝ์์ ํ๋ก์ ํธ๊ฐ ์์นํ ํด๋๋ก ์ด๋ํ๊ณ , gradlew clean build ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ค๋ค. 2๏ธโฃ build > libs ํด๋๋ก ์ด๋ํ๋ฉด ja..
2022.03.06 -
์คํ๋ง ๋ถํธ๋ก ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ (ํ์๋ฆฌํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ, Thymeleaf)
๊ฒ์ํ์ ์ง๊ธ๊น์ง ๋ง์ด ๋ง๋ค์์๋๋ฐ ์คํ๋ง ๋ถํธ๋ฅผ ํ์ฉํด์ ๊ฒ์ํ์ ๋ง๋๋ ๊ฒ๋ ํ๋ฒ ํด๋ณด์ ํด์ ๋ ๋ง๋ค์ด ๋ณธ๋ค! 1๏ธโฃ ํ ์ด๋ธ ์์ฑ ํ ์ด๋ธ์ ์์ ๋ถํฐ ๊ณ์ ์ฌ์ฉํด์ค๋ ํ ์ด๋ธ์ ์ด์ฉํด์ค ์์ ์ด๋ค. 2๏ธโฃ ์์ฑ ํ๋ฉด ๊ธฐ๋ณธ ํ๋ฉด์ ์ด๋ ๊ฒ ๊ตฌ์ฑ๋์ด ์๋ค. ์ด๋ฒ์๋ ์ ๋ง ๊ฐ๋จํ๊ฒ CRUD๋ง ์์ฑํ ์์ ์ด๊ณ ์ด์ ๊ฒ์ฆ, ๋ก๊ทธ์ธ ๋ฑ์ ๊ตฌํํด์ ์ ์ ๋ฐ์ ์ํฌ ์์ ์ด๋ค. (์ด๋ฒ์ ์ง์ง..!!!) ๋ช๋ฒ์ด๋ ๊ณต๋ถํ๋ฉด์ ๊ฒ์ํ์ ๋ง๋ค์ด์๋๋ฐ ๋ค๋ฅธ ์ ์ด๋ผ๋ฉด ํ์๋ฆฌํ๋ฅผ ํ์ฉํด JSP๋ ์ ํ ์ฌ์ฉํ์ง ์๋๋ค๋ ์ ์ด๋ค! ์ฌ์ฉํด๋ณธ ๊ฒฐ๊ณผ HTML์ ๋ค๋ฅธ ์ฝ๋ ๋ฑ์ด ์์ด์ง ์๋๋ค๋ ์ ์ด ์ข๊ณ ํ์๋ฆฌํ๋ ์คํ๋ง์ ์ฐ๋์ฑ์ด ์ข์์ ํ์ฉํ๊ธฐ ๊ต์ฅํ ์ข์๋ค. 3๏ธโฃ Board.class ์ด๋ฒ์๋ ๋กฌ๋ณต๋ ํ์ฉํด์ ์ข ๋ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํด์คฌ..
2022.01.19 -
Spring boot, IntelliJ์์ ๋กฌ๋ณตLombok ์ค์นํ๊ธฐ
1๏ธโฃ ์ฐ์ Gradle์ ์์กด์ฑ์ ์ถ๊ฐํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ฌ์ง์๋ ์๋ณด์ด์ง๋ง ์ฝ๋ผ๋ฆฌ ๋ชจ์์ด ์ค๋ฅธ์ชฝ ์๋จ์ ๋ํ๋ ํ ๋ฐ ๊ทธ ๋ฒํผ ๋๋ฌ์ฃผ๋ฉด ๋๋ค. 2๏ธโฃ Plugins ์ค์นํ๊ธฐ ์๋์ฐ ๊ธฐ์ค Files -> settings - > plugins ๊ฒ์ marktetplace์ lombok ๊ฒ์ํ๊ณ ์ค์นํด์ฃผ๋ฉด ๋๋ค. โ ๊ทผ๋ฐ ๋๋ ๊ฒ์ํ๋ ค๋๊น ์๋์์ ์์ธ๊ฐ ์ฐพ์๋ณด๋ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋์ด ์์ด์ ๊ฒ์๋์ง ์๋๋ค๊ณ ํ๋ค! ๊ทธ๋์ installed๋ฅผ ํด๋ฆญํด๋ณด๋ Lombok์ด ์ด๋ฏธ ์ค์น๋์ด ์์๋ค. 3๏ธโฃ Enable annotation prcessing ์ฒดํฌ ์๋์ฐ ๊ธฐ์ค File -> settings -> annotation processor ๊ฒ์ ์ ์์ Enable annotation proces..
2021.12.13 -
[Spring boot #4] ์คํ๋ง API @ResponseBody
์คํ๋ง์์ API๋ผ๊ณ ํ๋ฉด RESTful API๋ผ๊ณ ํ ์ ์๋ค. 1๏ธโฃ @ResponseBody ์ด๋ ๊ฒ @ResponseBody๋ฅผ ์ฌ์ฉํ๋ฉด returnํ ๋ ๋ทฐ ์ด๋ฆ์ ์ง์ ํด viewResolver๊ฐ ํด๋นํ๋ ๋ทฐ๋ก ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๊ฐ์ ์ ๋ฌํ์ง ์๊ณ , ๋์ ์ HTTP Body์ ๋ฌธ์ ๋ด์ฉ์ ์ง์ ๋ฐํํ๋ค. ๊ฒฐ๊ณผ ์ด๋ฉฐ ํ์ด์ง ์์ค๋ณด๊ธฐ๋ก ์์ค์ฝ๋๋ฅผ ๋ด๋ ๋ฌธ์ ๋ด์ฉ๋ง ๋์ค๊ณ , ๋ค๋ฅธ html ํ๊ทธ๋ ์ด๋ฐ๊ฑด ์๊ณ ๊ฐ์ฒด๊ฐ JSON์ผ๋ก ๋ณํ๋๋ค. ์ด๋์๋ ViewResolver๊ฐ ๋์ํ๋ ๊ฒ์ด ์๋๋ผ HttpMessageConverter๊ฐ ๋์ํด ๊ธฐ๋ณธ ๋ฌธ์์ฒ๋ฆฌ๋ฉด StringHtpMessageConverter๊ฐ ๋์ํ๊ณ , ๊ธฐ๋ณธ ๊ฐ์ฒด์ฒ๋ฆฌ๋ฉด MappingJackson2HttpMessageConverter๊ฐ ๋์ํ๋ค.
2021.12.07 -
[Spring boot #3] ์คํ๋ง ํ๋ก์ ํธ ๋ช ๋ นํ๋กฌํํธ(cmd)์์ ๋น๋ํ๊ณ ์คํํด๋ณด๊ธฐ
1๏ธโฃ ์ฐ์ cmd์ฐฝ์ ์ด๊ณ ์์ ์ ํ๋ก์ ํธ๊ฐ ๋ค์ด์๋ ๊ฒฝ๋ก๋ก ์ด๋ํด์ค๋ค. (intelliJ์์ ์๋ฒ๊ฐ ์คํ์ค์ด๋ผ๋ฉด ์ข ๋ฃํ๊ธธ) 2๏ธโฃ ๋๋ D๋๋ผ์ด๋ธ์ ์ด ํด๋์ ์์ด์ ์ด์ชฝ์ผ๋ก ์ด๋ํ๋ค. ๊ทธ๋ฆฌ๊ณ gradlew build๋ฅผ ์ ๋ ฅํ๋ฉด ๊ทธ๋๋ค์ด ์คํ๋๋ค. cd build/libs dir๋ก ํ์ผ ๋ชฉ๋ก์ ํ์ธํ๋ค. ๊ทธ ์ค hello-spring-0.0.1-SNAPSHOT.jar๋ฅผ ๋ณต์ฌํด์ java -jar hello-spring-0.0.1-SNAPSHOT.jar ํด์ฃผ๋ฉด intelliJ์์ ์คํ๋ ๊ฒ์ฒ๋ผ ์คํ๋๋ค!! ๋ค์ ์ ์ํด๋ณด๋ฉด ์ ์ ์๋๋ค! localhost์์๋ ํ์ชฝ์์ ์คํํ๋ฉด ๋ค๋ฅธ์ชฝ์์ ์คํ ์๋๋๊น ๋ค์ intelliJ์์ ์คํํ๊ธฐ์ ์ ๊ผญ ์๋ฒ๋ฅผ ๊บผ์ฃผ๊ธธ!!
2021.12.07 -
[Spring boot #2] ์คํ๋ง ๋ถํธ ์คํํฐ ์ฌ์ดํธ์์ ์คํ๋ง ํ๋ก์ ํธ ์์ฑํ๊ธฐ
1๏ธโฃ ์คํ๋ง ๋ถํธ ์คํํฐ ์ฌ์ดํธ ๊ฒฝ๋ก https://start.spring.io/ 2๏ธโฃ ํ๋ก์ ํธ ์์ฑํ๊ธฐ ์์ ๊ฒฝ๋ก๋ก ๋ค์ด๊ฐ๋ฉด ์ด๋ฐ ํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค. Project : ์ฐ์ Maven Project์ Gradle Project๊ฐ ์๋๋ฐ ์์ฆ์ maven ๋ณด๋ค gradle๋ก ํ๋ก์ ํธ๋ฅผ ๋ง์ด ๋ง๋๋ ์ถ์ธ๋ผ๊ณ ํ๋ค. ๊ทธ๋ผ ๊ทธ๋๋ก ๋ฐ๋ผ๊ฐ๋๊ฒ ์ข์ผ๋๊น gradle project๋ฅผ ์ ํํ๋ค. Spring Boot : 2.6.2 2.6.1 ๋ญ ์ด๋ ๊ฒ ์๋๋ฐ 2021-12 ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ธ 2.6.1์ ์ ํํ๋ค. SNAPSHOT์ ์์ง ๋ง๋ค๊ณ ์๋ ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ ์์ ํ 2.6.1์ ์ ํํ์. Project Metadata : Group์๋ ํจ์งํค๋ช ์ ์ ๋๋ฐ ๋ณดํต ํ์ฌ ๋๋ฉ์ธ๋ช ์ ๊ธฐ๋ ํ๋๋ฐ ์ด๊ฑด ์ฌ..
2021.12.07 -
[Spring boot #1] IntelliJ IDEA Community ์ค์นํ๊ธฐ
1๏ธโฃ IntlliJ ์ค์น ๊ฒฝ๋ก https://www.jetbrains.com/ko-kr/idea/download/#section=windows ๋ค์ด๋ก๋ IntelliJ IDEA: ์ฐ์์ฑ๊ณผ ์ธ์ฒด ๊ณตํ์ด ๋ด๊ธด JetBrains Java IDE www.jetbrains.com 2๏ธโฃ Community์ ๋ค์ด๋ก๋ ๋ฒํผ ํด๋ฆญ ์ปค๋ฎค๋ํฐ ๋ฒ์ ์๋ ๋ช๊ฐ์ง ์ค์ํ ๊ธฐ๋ฅ์ด ์ ์ธ๋๊ธด ํ์ง๋ง ์ผ๋จ Spring Boot ๊ณต๋ถํ๋ฉด์ ์ฒ์์ผ๋ก ์ดํด๋ฆฝ์ค๊ฐ ์๋ IntelliJ๋ฅผ ์ฌ์ฉํด๋ณผ ์์ ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฐ์ ๋ฌด๋ฃ ๋ฒ์ ์..๐ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฐ๋ก ๋ค์ด์ด ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ๊ณ์ next ๋๋ฌ์ฃผ๊ณ , ์ค์น ๊ฒฝ๋ก๋ ๊ธฐ๋ณธ C ๋๋ผ์ด๋ธ์ program File๋ก ์ง์ ๋ ๊ฒ์ด๋ค. (๋๋ D๋๋ผ์ด๋ธ์ ์ค์นํ๊ณ ์ถ์ด์ ๋ณ๊ฒฝํด์คฌ๋ค.) ๊ทธ๋ฆฌ๊ณ I..
2021.12.07 -
Spring @RestController ๋ฅผ ์ด์ฉํ ๊ฐ๋จํ ๊ฒ์ํ, ํ์ด์ง
1. REST(REpresentational State Transfer) : ํน์ URI๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์ํ๋ ์ ๋ณด๋ฅผ ์ ๊ณต๋ฐ๋ ํ์์ด๋ค. ์ด๋ ๊ฒ REST ๋ฐฉ์์ผ๋ก ์๋น์ค์ ๊ณต์ด ๊ฐ๋ฅํ ๊ฒ์ RESTful ํ๋ค๋ผ๊ณ ํ๋ค. 2. @RestController https://hyejin.tistory.com/275 Spring RESTful ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ฒ์ํ https://hyejin.tistory.com/272 Spring RESTful ์ฌ์ฉ์ ๊ด๋ฆฌ ํ๋ก์ ํธ (@RequestBody, @ResponseBody, GET, POST, PUT, DELETE, Postman ์ค์น ๋ฐ ํ ์คํธ https://hyejin.tistory.com/265 Spring MVC, Mybatis [2].. hyejin.tistor..
2021.12.06