JAVA/SPRING

JAVA/SPRING

[Spring] Spring Security setting과 에러 사항 수정 과정 기록과 OAuth2

Security docs : Spring Security Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authoriz spring.io 🍺 이거 왜 ? 프로젝트 진행 중 특정 API를 외부에서 쓸 수 있도록 인증과정을 제거해달라는 요청이 있었고, 제거 후 프로젝트를 스테이지 서버에서 기동 -> API는 자유롭게 ..

JAVA/SPRING

[Spring] @Valid , @Validated, BindingResult

미리 보기 페이지를 테스트 하는 도중 의문이 생겼다. @Valid 로 DTO 객체의 유효성 검증을 하고 BindingResult 를 통해 에러를 리턴하는 이유는 뭘까? 우선 선언은 각각 다음과 같다. import org.springframework.validation.BindingResult; import javax.validation.Valid; Spring에서 제공하는 BindingResult 와 달리 Valid는 자바에서 제공한다. BindingResult : 스프링 공식문서의 설명에 따르면, 바인딩 결과를 나타내는 것으로, Errors 오류 등록인터페이스를 확장하고, @validator 를 적용할 수 있도록 한다고 한다. * 즉 오류를 확장하는 목적이다. @Valid : ( spring boot ..

JAVA/SPRING

[Spring] Spring / Spring boot 특징 간단 정리.

JDK 17 을 서포트하는 spring 6.0대 버전이 등장했고, Spring Boot 3.0 도 java 17을 최소 버전으로 요구하기 시작했다. LTS 버전이 java 11 이후 17 버전으로 확장 되었다. Java 17에서는 많은 기능이 추가되고 향상되었지만, 현재 쓰는 11버전 이후에 추가된 (개인적으로 써보고 싶은) 기능들은 다음과 같다. 텍스트 블록 기능. 향상된 Switch 문 및 패턴 매칭 기능. Record 불변 객체 타입 ( Lombok 의 value) 프로퍼티 포함 생성자 private final 적용 getter 메소드 생성 toString, equals, hashcode method 생성 annotation울 붙이도록 허용. Sealed class 허용된 (permits) 클래스 ..

JAVA/SPRING

[NAVER maps 길 찾기] springboot + webClient 로 API 호출

spring boot / java 11 / react client 🥨 개인 프로젝트에서 naver 길찾기 api를 사용한 과정을 적어두려한다. 🥪 공식 문서를 보는 것이 가장 정확하므로 공식문서를 참고하는게 제일 베스트이다. 🍶 설정부터 API 요청까지, API 요청에서 response data를 받아오기까지 정리하려 한다. 🍫 길찾기 API는 우선 네이버 클라우드 플랫폼에서 서비스 사용을 위한 등록이 먼저 되어야 한다. https://console.ncloud.com **** 서비스 등록은 생략 🍿 인증을 위한 키값이므로, 유출되지 않도록 조심해야 한다. ** 등록이 되었다면 실제 API를 요청해야 하는데 처음 시도 할 때에 클라이언트에서 직접 요청한 값을 쓰려 했으나, 현재는 JS 요청을 NAVER ..

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..

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/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/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..

JAVA/SPRING

Spring cloud config

🥕 spring clud config == 설정 파일을 외부로 분리. 사용자의 요청을 받음 - > 사용자의 개인적인 셋팅도 설정 가능은 함. 😒 사용자의 요청이 아닌 상황 -> 서버의 작동 config 설정에 대한 수정 요청 -> 서버 구동 시 필요한 config / xml 파일 / json 파일들의 변경사항 설정 반영. ** 사용자 / 서버 / 관리자 의 요청이 실시간으로 깃허브 등에 반영. 과정이 수행되고 client / application 에서 server가 변경 / 신규 / 수정한 설정의 결과값으로 어플리케이션이 작동해야 의미가 있음. SERVER build.gradle 설정 : : 서버 실행시 GIT에 있는 파일의 위치를 찾았다면! 콘솔에 위와 같은 로그를 찍게 됨. adding propert..

girin_dev
'JAVA/SPRING' 카테고리의 글 목록