목록💡 백엔드/Java (74)
코딩마을방범대
Argument Resolver API 엔드포인트로 인입된 데이터를 가공 및 바인딩 할 때 사용하는 객체 http body 또는 url 파라미터로 넘어오는 데이터들은, @ReqeustBody와 @RequestParam 등으로 바인딩 할 수 있지만, http 헤더, 쿠키, 세션 등으로 전달되는 데이터인 경우에는 Argument Resolver를 이용할 수 있음 대표적으로 세션에서 로그인한 사용자의 정보를 얻거나, 헤더로 전달되는 토큰에서 사용자의 정보를 얻을 때 사용 Argument Resolver가 호출되는 시기 컨트롤러의 메소드 찾기 → Argument Resolver 처리 → 컨트롤러 메소드 실행 커스텀 어노테이션 만들기 1. 어노테이션 선언 메소드 변수를 통해 세팅값을 정의할 수 있음 @Inheri..
예를 들어 'USER'라는 대문자로 된 테이블을 생성한 후,Spring에서 @Entity(name="USER")로 명시해주었으나아래와 같이 table을 찾지 못하는 문제가 발생했다.Table 'DB명.테이블명' doesn't exist Spring에서 Hibernate 기본 설정에 의해 대소문자를 구별하지 않아 발생하는 문제이며,yml 설정을 통해 테이블 수정 없이 인식 가능하다. 1. MySQL 테이블 생성 설정을 확인show variables like 'lower%'; 위 명령어 입력 시 하기와 같은 데이터를 확인할 수 있다.'lower_case_table_names'이 0일 경우 대소문자를 구분, 1일 경우 구분하지 않는다.0(대소문자 구분)으로 만들어졌을 경우, 대문자 테이블은 JPA에서 읽어올..
QueryDSL 을 사용해야 하는 이유QueryMethod주어진 명령어를 통해 한정적인 쿼리만 생성 가능컴파일 시 오류를 발견할 수 있음JPQL사용자가 원하는 쿼리를 자유롭게 생성할 수 있음문법 오류가 있는 경우에도 컴파일 시 오류를 잡을 수 없고 런타임 때 확인 가능개행이 포함되어 복잡한 쿼리의 경우 문법이 복잡해짐 세팅하기 build.gradle 설정java 1.8spring boot 2.7.11스프링부트 버전 별 설정법dependencies { ... //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importe..
@Converter란? 변수의 타입을 변환하여 출력/저장할 때 사용 사용 방법 Converter 클래스 생성 방법 1. AttributeConverter 를 구현 엔티티의 컬럼 타입, 데이터베이스의 컬럼 타입을 입력 받음 @Converter public class MailTypeConverter implements AttributeConverter { // 데이터베이스 타입으로 변경 (코드) @Override public String convertToDatabaseColumn(MailTypeEnum attribute) { return attribute.getType().equals("html") ? "CMMMCD001" : "CMMMCD002"; } // Entity 타입으로 변경 (소스, Enum 타입..
의존성 추가 // https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' 간단한 토큰 생성과 검증 토큰 생성 KEY값은 난수 생성 사이트 에서 생성하여 사용할 수 있음 key = 256bit 난수; //Header 부분 설정 Map headers = new HashMap(); // 토큰의 유형 headers.put("typ", "JWT"); // 서명 알고리즘 headers.put("alg", "HS256"); //payload 부분 설정 Map payloads = new HashMap(); // 저장할 데이터 설정(AES암호화) p..
인증서 가져오기 CertificateFactory 지정된 타입의 CertificateFactory 객체를 작성해, 지정된 프로바이더를 구현 (SPI 객체) ※ -1: 저장된 인증서 / -2: String값 1. getInstance(문자열 알고리즘) 지정된 인증서 유형을 구현하는 인증서 팩토리 객체를 반환 // 공개키 유형의 X.509를 이용 CertificateFactory cf = CertificateFactory.getInstance("X.509"); 2-1. 파일 읽기 FileInputStream in = new FileInputStream(파일경로); 2-2. String inputStream에 담기 바이트코드로 바꾼 후 inputStream으로 생성 Byte[] crtByte = Base64...
List findAllByLikeStatusAndUser_UserKey(LikeStatus likeStatus, String userKey) 위 코드와 같이 Query Method에 언더바가 있는 경우 아래 코드와 같이 연관관계 매핑이 이루어져있을 수 있음 // Like 테이블 @ManyToOne private User user; private LikeStatus likeStatus; JPA에서 지원하는 Query Method 자체에서 언더바가 JOIN 기능을 가지는게 아니라 Like 테이블에 user_key라는 필드를 가지고 있을 경우를 대비해 언더바를 이용해 그 모호성을 해결해 준 것 참고사이트
Spring Security란 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크 Principal을 아이디로, Credential을 비밀번호로 사용하는 Credential 기반의 인증 방식을 사용 Principal(접근 주체): 보호받는 Resource에 접근하는 대상 Credential(비밀번호): Resource에 접근하는 대상의 비밀번호 인증과 인가란 인증(Authentication) 해당 사용자가 본인이 맞는지 확인하는 절차 인가(Authorization) 인증된 사용자가 요청한 자원에 접근 가능한지 결정하는 절차 Spring Security의 주요 모듈 SecurityContextHolder 보안 주체의 세부 정보를 포함하여 응용프래그램의 현재 보..