전체 글

기록합시다.
JAVA/SPRING

springBoot / mapstruct

🍟 dto entity 변환 시, mapstruct 라이브러리를 사용하는 방법이 있다. 세팅 : build.gradle dependencies { //MapStruct annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final' implementation 'org.mapstruct:mapstruct:1.4.2.Final' } mapper * UserMapper로 구현함. package com.org.walk.user; import com.org.walk.util.EntityMapper; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @Mapper public interfa..

AWS

EC2 포트포워딩

🥃 외부 접속 ip 및 port 정보를 내부 port 로 매칭시키려 함. EC2 인스턴스 준비는 생략. $ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9300 -j REDIRECT --to-port 9300 $ sudo iptables -t nat -L --line-numbers AWS EC2 를 쓰고 있으므로 사용 인스턴스의 인바운드 규칙에 port를 설정해야 한다. * 아웃바운드 규칙은 기본적으로 모두 열려있다. 잘 열렸는지 체크. $ echo > /dev/tcp/127.0.0.1/[port] $ echo &? echo $? 에서 리턴이 0으로 온다면 잘 실행되었다는 뜻임. * 기타 이유로 삭제가 필요 할 경우 : $ sudo iptable..

JAVA

springboot / querydsl 설정

🥕 querydsl 설정을 통한 Q클래스 작동 및 실행 확인까지. # springboot 2.7.0 build.gradle buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.7.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'war' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } configurations { compileOnly { extendsFrom annotationProcessor } } dependencies { //..

JAVA/SPRING

spring boot / H2 DB 세팅

🤢 테스트용으로 인메모리 h2 환경을 조성한다. java 1.8 / springframework.boot 2.7.0 / gradle 테스트용이나, 개인 사이드 프로젝트용으로 쓰는 이유는 데이터를 디스크가 아닌 메모리에 보유하고 있기 때문임. (휘발성을 띄고 있지만, 설정에 따라 파일로 기록 가능하다.) build.gradle dependencies { // https://mvnrepository.com/artifact/com.h2database/h2 implementation group: 'com.h2database', name: 'h2', version: '2.1.212' implementation 'org.springframework.boot:spring-boot-starter-jdbc' } appl..

JAVA/SPRING

Hikari CP / Spring boot 설정

CP : connection pool Connection의 과부하를 막기 위해 씀. Connection을 미리 만들고 Connection pool 에 두었다가 사용자의 요청이 발생할 경우 Connection을 제공하고, 요청이 끝났다면 다시 Connection pool에 보관한다. DB접속 설정 객체를 미리 만들어 연결하여 메모리 상에 등록해 놓기 때문에 클라이언트가 빠르게 DB에 접속 가능 DB Connection 수를 제한 할 수 있어서 과도한 접속으로 인한 서버 자원 고갈 방지 가능 DB 접속 모듈을 공통화해 DB서버의 환경이 바뀔 경우 쉬운 유지보수 가능 연결이 끝난 Connection을 재사용함으로써 새로 객체를 만드는 비용을 줄일 수 있음 😒HikariCP란 Springboot 2.0 부터 d..

JAVA

jwt 토큰 인증 + Interceptor 검증.

ID / PW 를 사용하는데 pw를 토큰으로 써보자. * 이방식은 refresh token으로 만료 기한을 연장하는 방식이 아니며, access token의 만료기한만 검사. 목적 : interceptor 에서 사용자의 요청에 앞서 json token의 만료 기한을 검증한다. pom.xml에 의존성 추가. io.jsonwebtoken jjwt 0.9.1 토큰 생성. public static String createToken(UserDto user, String SECRET_KEY) { //Header 설정 Map headers = new HashMap(); headers.put("typ", "JWT"); headers.put("alg", "HS256"); // algorithm SignatureAlgor..

JAVA/SPRING

QueryDSL , Criteria , Native Query

간단한 경우, 와 같은 방법으로도 처리가 된다. 아니라면, 굳이 @Query로 다시 쿼리 쓴다 - > 오타 , 띄어쓰기 등에 의해 에러를 내뱉을 확률이 높아짐. 따라서 Criteria 또는 open source 라이브러리인 QueryDSL을 쓴다면 더 간편하게 JPA를 쓸 수 있다. Criteria는 JPQL을 생성하는 빌더 클래스에 해당한다. 프로그래밍 코드로 JPQL을 작성해준다는 장점이 있다. CriteriaBuilder cb = em.getCriterBuilder(); CriteriaQuery query = cb.createQuery (Member.class); Root m = query.from(Member.class); CriteriaQuery cq = query.select(m).where(..

JAVA

java 정규 표현식

🤢 하고 싶은 것. : {"param" : " "param1" "param2" "param3" "} --> {"param" : ""} 결과 먼저: temp = "바꾸고 싶은 문자열"; String regx = "\"\"[^,|}]+"; temp = temp.replaceAll(regx,"\"\""); String tt = "{" + "\"type\":\"80\"" + ",\"src_path\":" + "{\"path\":\"/Storage/highres/2022/01/06/106145/106145.mxf\"" + ",\"src_id\":\"\",\"src_pwd\":\"\",\"src_strg_id\":0,\"src_strg_nm\":\"\"}" + ",\"tgt_path\":" + "{\"path\":..

SERVER

iptables / centOS7 / 방화벽 설정 / 공유기 포트포워딩 세팅

원격 개발용 서버에 접속했을 때 갑자기 404가 떠있는 상황이 있다. 위와같이 나온다면 접속은 된다는 이야기. 순서는 다음과 같다. 1. 서버에 내가 원하는 배포가 잘 이루어졌지만 원격에서 안들어가진다. 내가 서버로 쓸 컴퓨터의 공유기 정보를 확인한다. 2. 로컬에서 포트가 접속되는지 확인한다. $ telnet 127.0.0.1 8080 또는 $ ping 192.168.1.1 만약 위 과정에서 접속이 안된다면 서버의 포트가 열려있는지 체크한다. $ netstat -nap | grep 8080 ( port ) 위 과정에서 안열려있다면 서버의 포트를 여는 작업을 해야 한다. 현재 서버의 iptables 정보를 체크한다. 😒 iptables는 리눅스 상에서 방화벽을 설정하는 도구이다. 커널 2.4 이전 버전에..

JAVA/SPRING

log4j2.xml / log4jdbc / slf4j 설정

😒 로그는 정확히 필요한 내용을 꼭 기록하는게 좋음. LIB 설정 (MAVEN) pom.xml * JDBC org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 * slf4j (slf4j 인터페이스와 log4j2를 연결해주는 모듈 역할) * 취약점 없는 최신버전으로 수정 org.apache.logging.log4j log4j-slf4j-impl 2.17.2 * log4j api / core org.apache.logging.log4j log4j-core 2.17.2 org.apache.logging.log4j log4j-api 2.17.2 * spring settings war 1.0.0-BUILD-SNAPSHOT 1.8 UTF-8 UTF-8 5.3.13 1.8..

girin_dev
girin_dev