BACKEND/SpringBoot
12
Spring boot :: ์ธ๋ถ http ๋ถ๋ฌ์ body ๊ฐ ๋ฆฌํดํ๋ RequestUtil (Proxy Server ๊ธฐ๋ฅ)
2024.02.20
๋ด๊ฐ ํ๊ณ ์ถ์๋ ๊ฒ์ http:~ ๋ก ๋ ์ฃผ์์ ๋ด๊ธด API data ๋ฅผ ๋ด๊ฐ ๊ตฌํํ ์๋ฒ์์ ์ ๊ณตํ๋ ๊ฑฐ ์์. ๊ณ ๋ก ๋ด๊ฐ ๊ตฌํํ ์๋ฒ์์ ํ๋ก์ ์๋ฒ์ ์ญํ ์ ํด์ฃผ์ด์ผ ํ๋ ๊ฒ. ์ด๋ ๋ญ RestTemplete ์ด๋ WebClient ๋ ์ค์นํ๊ณ ์
ํ
ํ๊ณ ... ๋๋ฌด ๊ท์ฐฎ์์. ๊ทธ๋์ ๊ฐ๋จ ver ๋ก requestUtil ์ ๋ง๋ค์ด๋ณด์๋ค. import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframewo..
MSSQL, Mybatis :: DBํด๊ณผ ์น์์์ ์ฟผ๋ฆฌ ์๋๊ฐ ๋ค๋ฅผ ๋ ๊ณ ๋ คํ ๊ฒ
2024.01.16
์ฟผ๋ฆฌ์๋๋ 00:00:06 ์ด ์ ๋๋ก ์งง๊ฒ ๋์ค๋๋ฐ API ์คํ ์๋๋ 48์ด๊ฐ ๋์ค๋ ์ผ์ด์ค๊ฐ ๋ฐ์. ๋ฌผ๋ก ๊ฑด ์๊ฐ ๋ง์ SQL์ด๊ธฐ๋ ํ์ง๋ง, ์ฟผ๋ฆฌ ์๋์ API ์๋๊ฐ ์ด๋ ๊ฒ ๋น๋กํ์ง ์๋ ์ผ์ด์ค๋ ์ฒ์์ด์์. -- ์ด๋ฐ ํ์์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ Where ์ ์ ์กฐ๊ฑด์ด VARCHAR๋ก ๋์ด ์๋ค๋ ๊ฒ MSSQL ์ ํน์ง MSSQL์ ๊ฒฝ์ฐ VARCHARํ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ NVARCHARํ์ผ๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ค๊ณ ํจ. ์ฆ, ๋ฐ์ดํฐ์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ๋ณ์ผ๋ก ํ ์ง ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ผ๋ก ๋ณด์. ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๊ฐ์ ์ ์ผ๋ก ํ์
์บ์คํ
์ด ์ผ์ด๋๊ณ , ์ํ๋๋ ์ฟผ๋ฆฌ์ ํ์
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ INDEX๋ฅผ ์ํ๊ฒ ๋จ. ใ
-ใ
.. ์ฟผ๋ฆฌ ํ๋์ ์๋ฌด๋ฆฌํด๋ DB ์๋๋ ๋นจ๋ผ์ง๋๋ฐ, API ํธ์ถ ์๋๋ ํฌ๊ฒ..
Mybatis :: ๋ฌ๋ฌ($)์ ์ต(#)์ ์ฐจ์ด
2024.01.16
ํ๋ผ๋ฏธํฐ ๋งคํ์ ํ๋ ๋ฐ์ ์ฌ์ฉํ๋ $์ # ๋๊ฐ์ง์ ์ฐจ์ด์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ๋ค. # PreparedStatement๋ฅผ ์๋ฏธ ํ๋ผ๋ฏธํฐ๊ฐ String ํํ๋ก ๋ค์ด์ ์๋์ผ๋ก(' ') ํ๋ผ๋ฏธํฐ ํํ๊ฐ ๋จ #{user_id} ์ ๊ฐ์ด 'neeon'์ด๋ผ๋ฉด user_id = 'neeon' ํํ๊ฐ ๋จ ์ฟผ๋ฆฌ ์ฃผ์
์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ์ ๋ฆฌ ์ ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์บ์ฑ์ ํด์ ์ฌํ์ฉํ ์ ์์ด์ ํจ์จ์ ์ $ Statement๋ฅผ ์๋ฏธ ํด๋น ์ปฌ๋ผ์ ์๋ฃํ์ ๋ง์ถ์ด ํ๋ผ๋ฏธํฐ์ ์๋ฃํ์ด ๋ณ๊ฒฝ๋จ ํ๋ผ๋ฏธํฐ๊ฐ ๋ฐ๋ก ์ถ๋ ฅ๋จ. ์ฟผ๋ฆฌ ์ฃผ์
์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ๋ถ๋ฆฌํ๋ฏ๋ก ์ฌ์ฉ์์ ์
๋ ฅ์ ์ ๋ฌํ ๋๋ ์ฌ์ฉํ์ง ์์ (SQL Injection) ํ
์ด๋ธ์ด๋ ์ปฌ๋ผ๋ช
์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉํจ ์ฐจ์ด์ ..
SpringBoot :: ์ด์ด์ด๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ์ ์์ฒญ์ ๋ํ ๊ฒฝ๊ณผ์๊ฐ ์์๋ณด๊ธฐ
2024.01.16
๊ฐ๋ฐ ๋์ค API ํธ์ถ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์์ด๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋์๋ค. DB ์๊ฐ์ SQL ์ ๋๋ ค๋ณด๋ฉด ๋์ค๋๋ฐ.. ์์๋งํผ ์ค๋ ๊ฑธ๋ฆฌ์ง๋ ์์๊ณ ๊ทธ๋ฆฌ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฟ๋ฆฌ๋ ๊ฒ ์ ๋ถ์ธ๋ฐ๋ค, ๊ทธ๋ฆฌ๋์ ๊ฒฝ์ฐ๋ ๋ณ๋ ๊ตฌํ์์ด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ์ ํ๋ก ํธ์๋์ ๋ฌธ์ ๋ ์๋๊ฑฐ ๊ฐ๊ณ .. ํน์ ๋ชจ๋ฅด๋๊น ๋ฐฑ์๋ ๊ฒฝ๊ณผ ์๊ฐ์ด ์ด๋ป๊ฒ ๊ฑธ๋ฆฌ๋์ง ํ์ธ์ ํด๋ณด๊ณ ์ ํ๋ค. ์์ค ์ฝ๋ // ์ปจํธ๋กค๋ฌ ๋จ long startTime = System.currentTimeMillis(); List TactTimeList = tacttimeService.tacttime(paramMap); // Service ํธ์ถ๋ถ long endTime = System.currentTimeMillis(); long ms = endTime - start..
Java :: equals() ์ == ์ ์ฐจ์ด
2024.01.09
.equals()์ == ๋ชจ๋ ๋น๊ต ์ฐ์ฐ์์ด๋ฉฐ ๋ ๋ค ๋ชจ๋ ์์ชฝ์ ์๋ ๋ด์ฉ์ ๋น๊ตํ ๊ฐ์ boolean type์ผ๋ก ๋ฐํํ๋ค. ๊ทธ๋ฐ๋ฐ java์์ String์ฒ๋ผ Class์ ๊ฐ์ ๋น๊ตํ ๋์๋ ๋ณดํต equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ... equals์ ==๋ ๊ตฌ์กฐ์ ์ผ๋ก ์ด๋ค ์ฐจ์ด์ ์ ๊ฐ๋์ง ์์๋ณด๋๋ก ํ์. 1. ํํ์ ์ฐจ์ด .equals() ๋ ๋ฉ์๋ ์ด๋ฉฐ == ๋ ๋น๊ต๋ฅผ ์ํ ์ฐ์ฐ์ ์ด๋ค. 2. ์ฃผ์ ๊ฐ ๋น๊ต์ ์ค์ ๊ฐ(๋ด์ฉ) ๋น๊ต .equals() ๋ฉ์๋๋ ๋น๊ตํ๊ณ ์ ํ๋ ๋์์ ๋ด์ฉ ์์ฒด๋ฅผ ๋น๊ตํ์ง๋ง, == ์ฐ์ฐ์๋ ๋น๊ตํ๊ณ ์ ํ๋ ๋์์ ์ฃผ์ ๊ฐ์ ๋น๊ตํ๋ค. int, float, double, byte ๋ฑ์ primitive type ์ผ๋ก Call By Value(CBV) ์ ํด๋น. Cla..
Java, SpringBoot :: private ์์๋ฅผ private static final๋ก ์ ์ธํ๋ ์ด์
1
2023.12.28
static์ด๋? (์ ์ ์ธ, ์์ง์์ด ์๋) static ์ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ jvm์ static ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค. static ์์ญ์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ด ์์ํ๊ณ ์ข
๋ฃํ ๋๊น์ง ์ด์ ์์ด ๋ณ๋์ ์ด๊ธฐํ ๊ณผ์ ์ ํ์๋ก ํ์ง ์๊ณ static์ด ์ ์ธ๋ ๋ณ์, ๋ฉ์๋์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋ค. static์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ๋ ํด๋น ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ค๋ ์๋ฏธ. ๋์ผํ ๊ฐ์ฒด๋ก ๊ฐ๋ง ๋ฐ๊พธ์ด ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์๊ณผ ๋์์ ๋์ผํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ง ๋ฐ๊พธ์ด ์ฌ์ฉํ๋ค๋ ์ ์์ ๋ณ์์ ๊ฐ์ ์ ์คํ๊ฒ ๋ฐ๊พธ์ด์ผ ํ๋ค๋ ์๊ฐ๋ ํด์ผํ๋ค. final์ด๋? ๋ถ๋ณ๊ณผ ๊ด๋ จ๋ ์์ฑ์ด ์๋๋ผ ์ฌํ ๋น ๋ฐฉ์ง์ ๊ด๋ จ๋ ์์ฑ. final์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฌํ ๋น์ด ๋ฐฉ์ง๋๋ฏ๋ก, ์์์ด๋ ๊ฐ ์ฌ ์ด๊ธฐํ ๋ฑ์ด ๋ถ๊ฐ๋ฅํด์ง๋ค. public ..
Springboot(java) :: ๋ฌธ์ ๊ด๋ จ StringUtil ๋ชจ์์ง
2023.12.27
ํ์ผ๋ก ๋ณด๊ธฐ๋ ์๋์.. ์
์ฑ์ฝ๋ ็ก only java.. /** * @Class Name : StringUtil.java * @Description : ๋ฌธ์์ด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ด๋ จ ์ ํธ๋ฆฌํฐ * @Modification Information * @author ony **/ package com.sample.controller; // ์ด๋ฆ ์์ ๋ณ๊ฒฝํจ import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.security.SecureRandom; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Locale; public ..
SpringBoot :: Log4jdbc ๋?
2
2023.11.15
Log4jdbc Log4j ๋ฅผ JDBC์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์คํ์์ค ํ๋ก์ ํธ GitHub - arthurblake/log4jdbc: log4jdbc is a Java JDBC driver that can log SQL and/or JDBC calls (and optionally SQL timing info log4jdbc is a Java JDBC driver that can log SQL and/or JDBC calls (and optionally SQL timing information) for other JDBC drivers using the Simple Logging Facade For Java (SLF4J) logging system. - G... github.com ์์ ์ฝ๋๋..
SpringBoot :: Swagger API ์ฐ๋
2023.10.26
dev. environment. SpringBoot 3.1.1 Java 17 ์ค์จ๊ฑฐ(Swagger) ๋? ๊ฐ๋ฐ์๊ฐ REST API ์๋น์ค๋ฅผ ์ค๊ณ, ๋น๋, ๋ฌธ์ํํ ์ ์๋๋ก ํ๋ ํ๋ก์ ํธ REST API๋ฅผ ๋ฌธ์ํํ๋ ๋๊ตฌ์ด๋ฉฐ, API์ ๋ํ ๋ช
์ธ(Spec)์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ก์ ํธ API๊ฐ ์์ ๋๋๋ผ๋ ๋ฌธ์๊ฐ ์๋์ผ๋ก ๊ฐฑ์ . 2011 ๋
์ ์ฒ์ ๋์
๋ ๊ฐ๋
๊ธฐ์กด, ์๋๋ ์์
๋ฑ ์๊ธฐ ์์ฑํ๋ ๋ฌธ์ํ API ๋ช
์ธ์์ ๋ฌ๋ฆฌ ์๋ฒ์ ์ผ์ ์
ํ
์ ํด์ฃผ๋ฉด API ๋ช
์ธ์๊ฐ ๊ฐฑ์ ๋๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ฐ๋ฐํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ์ํต์ ํ๋ ค๋ฉด API ๋ช
์ธ์๊ฐ ๊ผญ ํ์ํ๊ฒ ๋๋๋ฐ ์ด๊ฑธ ํ๋ํ๋ ๋ช
์ธํ๊ณ ์๋ ๊ฒ๋ ๊ฝค๋ ํฐ ์ผ๋ก ํ์
๋๋ค. ์ด๋ฐ ์
๋ฌด ๋ก์ค๋ฅผ ์ค์ด๊ธฐ ์ํด ์๋ฒ ๋จ์ ์ ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก๋ฐ..
Sping :: Target Folder
2023.10.25
Target ํด๋ ํ๋ก์ ํธ ์ปดํ์ผ ์ ์ปดํ์ผ๋ ํ์ผ์ด ์ ์ฅ๋๋ target/classes๊ฐ ์์ฑ๋๋ ๊ณณ ํ๋ก์ ํธ ๋น๋ ์ target ์ด๋ผ๋ ํด๋๊ฐ ์์ฑ๋๋ค. Maven์ ์ด์ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ ๊ฒฝ์ฐ ํด๋น ํด๋๊ฐ ์์ฑ๋๋ค. ์ถํ ํ๋ก์ ํธ์ ๊ฒฐ๊ณผ๋ฌผ์ธ .jar ๋๋ .war๋ฅผ ์ค ์๋ฒ์ ๋ฐ์ํ ๋ target์ ์๋ jar๋ war๋ฅผ ๋ฐฐํฌํจ. if) ์ค์๋ก ์ญ์ ์ ๋น๋๋ฅผ ์๋ก ํด์ ๋ค์ ๋ง๋ค๋ฉด ๋จ. ์์ ๊ฐ์ ๋ก์ง์ผ๋ก ์ธํ์ฌ ๋ณดํต ์ปค๋ฐ๋์์ด ์๋๊ฒ ๋๋๋ฐ intelliJ ์์๋ ๋น๋ ๋์์์ ์์์ ์ ์ธํด์ค๋ค. ์ด๋ฐ์์ผ๋ก ์ฃผํฉ์? ํด๋๊ฐ ๋๋ฉด ๋ฐฐํฌ ๋์์ด ์๋๋ผ๋ ๋ป. ๋ง์ฝ.. ์ด๊ฑธ git ์ ๋ฐฐํฌ ๋์์ผ๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด Ctrl + Alt + Shift + "S" ๋ฅผ ๋๋ฅด๊ณ ๋ชจ๋ > ์ฃผํฉ์ ํด๋ ํด๋ฆญ..
spring๊ณผ springboot
2023.08.21
1. ์คํ๋ง(Spring) - Java Platform ์ ์ํ ์คํ์์ค ์ดํ๋ฆฌ์ผ์ด์
ํ๋ ์์ดํฌ - ๋์ ์ธ ์น ์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ง ์๋น์ค ์ ๊ณต - ์ ์ ์ ๋ถ ํ์ค ํ๋ ์์ํฌ ๊ธฐ๋ฐ ๊ธฐ์ ๋ก ์ฌ์ฉ - ํน์ง: ๊ฒฝ๋ ์ปจํ
์ด๋, IoC(Invertion of Control: ์ ์ด ์ญํ), Di(Dependency Injection: ์์กด์ฑ ์ฃผ์
), AOP(Aspect-Oriented Programming: ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) 2. ์คํ๋ง ๋ถํธ(Spring Boot) SpringBoot makes it easy(์ฝ๊ฒ ๋ง๋ ๋ค), to create stand-alone(๋จ๋
์ ์ธ), production-grade(์์ฉํ ์์ค์) Spring based Applications(์คํ๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
) tha..
DAO, DTO, VO ๋?
2023.08.16
1. DAO(Data Access Object) ์ค์ ๋ก DB์ data์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฐ์ฒด. DB๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์กฐํ ๋ฐ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๋ดํ๋ object. - ์ค์ ๋ก DB์ ์ ๊ทผํ์ฌ data๋ฅผ ์ฝ์
, ์ญ์ , ์กฐํ, ์์ ๋ฑ CRUD ๊ธฐ๋ฅ์ ์ํํ๋ค. - Service ๋จ๊ณผ DB ๋จ์ ์ฐ๊ฒฐํ๋ ๊ณ ๋ฆฌ ์ญํ 2. DTO(Data Transfer Object) ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด, ๋ก์ง์ ๊ฐ์ง์ง ์๋ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด(Java Beans). VO์ ํผ์ฉํ์ฌ ์ฌ์ฉํ๋ฉฐ, ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด. - DTO๋ ์ฆ, getter/setter ๋ฉ์๋๋ง ๊ฐ์ง ํด๋์ค๋ฅผ ์๋ฏธํจ - DB์์ ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ Service๋จ์ด๋ Controller ๋จ ๋ฑ์ผ๋ก ๋ณด๋ผ ๋ ์ฌ์ฉ 3. VO(Valu..