Spring Assert Statements package org.springframework.util; 인수를 검증하고 예외를 발생시키는 유용한 클래스 Assert Class Spring Assert 특징 Assert 메서드는 정적 예상되는 인수를 가정하고, 조건이 충족되지 않으면 런타임 예외를 발생 첫 번째 매개 변수는 검증을 위한 인수 또는 확인할 논리적 조건 두 번째 매개 변수는 유효성 검사에 실패할 경우 표시되는 예외 메시지 Example public class Car { private String state = "stop"; /** * speed > 0 조건을 충족하지 않을 경우 런타임 예외 발생 */ public void drive(int speed) { Assert.isTrue(speed ..
Using JWT(JSON Web Tokens) in Java JWT를 업무에 사용해야 하는 일이 생겼는데, 알고는 써야지 생각을 해서.. JWT 생성과 복호화과정을 간략하게 살펴보려고 한다. Token Authentication 토큰 인증은 서버 측 세션 ID에서 해결할 수 없는 문제 해결을 위해 개발 서버 로드 감소, 권한 관리 간소화 등의 장점 기존 인증과 마찬가지로 사용자는 확인 가능한 자격 증명을 세션 ID 대신 토큰 세트로 제공 토큰은 사이트 간 요청 위조(CSRF) 보호 체계, OAuth 2.0 상호 작용, 세션 ID 및 인증 표현(쿠키 내)을 포함한 다양한 응용 프로그램 제공 JWT JSON 형식 웹 토큰 URL에 안전하고, 인코딩 되고, 암호화된 문자열로 다양한 응용 프로그램에서 토큰으로..
KISA SEED 암호화 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해 1999년 2월 한국인터넷진흥원과 국내 암호전문가들이 순수 국내기술로 개발한 128비트 블록 암호 알고리즘 128bit의 암/복호화키를 이용하여 임의의 길이를 갖는 입력 메시지를 128bit의 블록단위로 처리하는 128bit 블록암호 알고리즘 따라서, 임의의 길이를 가지는 평문 메시지를 128bit씩 블록단위로 나누어 암호화하여 암호문을 생성 암/복호화하는 방법에 대한 운영모드로 ECB(Electronic Code Book), CBC(Cipher Block Chaining), CTR(CounTeR), CCM(Counter with CBC-MAC), GCM(Galois/Counter Mode)..
RSA Public/Private key in JAVA 업무 중 외부 API와 연동을 위해 RSA 암호화 알고리즘을 적용이 필요하게 되었는데, Public Key, Private key 에 대한 개념을 이해하고 적용해 보고자 간단하게 정리하게 되었다. RSA(Rivest-Shamir-Adleman) 비대칭 암호화 알고리즘 공개 키를 사용하여 데이터를 암호화하고, 개인 키를 사용하여 암호를 해독 대칭 알고리즘인 DES, AES와 다르게 2개의 키(Public Key, Private Key) 존재 Public Key : 누구와도 공유할 수 있는 공개 키(데이터를 암호화에 사용) Private Key : 자신을 위한 개인 키(복호화에 사용) 메세지 암호화 시 해당 메세지가 공개 키(Public Key)로 암호..
Redis Transactions 프로젝트에 Redis 를 적용하면서 Redis Transaction 을 잘 모르고 사용했다가, Spring Transaction 과 함께 데이터가 롤백되어 버리는 상황을 맞이하고 Redis Transaction 에 대해 알아보게 되었다. . Redis 는 싱글 스레드 기반으로 데이터 처리 반면, 이벤트 루프(Event Loop)라는 Redis 동작 원리로 여러 클라이언트 요청을 동시에 응답하는 동시성 보유 유저 레벨에서는 싱글 스레드로 동작하지만, 커널 I/O 레벨에서는 스레드 풀 이용 따라서, 동시성 문제에 대한 처리가 필요 Redis 동시성 처리를 위한 트랜잭션 방법은 SessionCallback 인터페이스를 구현하는 방법과 @Transactional 을 사용하는 방..
Request multipart/form-data type API by attaching a file 서버단에서 multipart/form-data 타입으로 파일을 첨부해서 요청을 보내본 적은 없었는데.. 이번에 관련 작업을 하면서 정리를 해보고자 한다. (여기서 파일은 이미지 URL 을 저장해서 보낸다.) MultipartFile multipart/form-data 타입으로 Request 시 MultipartFile 객체가 필요하다. @PostMapping(value = "/sample/image", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) SampleResponse uploadImage(MultipartFile upload, @RequestHeader(va..
Spring Boot + Redis Spring Boot 에 Redis 를 적용하면서 알게된 내용들을 정리해보자. Redis 특징 Collection(List, Set, Sorted Set, Hash) 지원 Race condition 방지 Redis 는 Single Thread 로 Atomic 보장 persistence 지원 서버가 종료되더라도 데이터 리로드 가능 Spring Data Redis Ready build.gradle Redis 는 Key-Value 형식을 갖는 자료구조 Spring Data Redis 는 RedisTemplate , Redis Repository 를 사용하는 두 가지 접근 방식 제공implementation 'org.springframework.boot:spring-b..
Java / Spring Framework / Spring Boot Release Java Java 10 Local Variable Type Inference // Choose variable names that provide useful information. // Before List x = dbconn.executeQuery(query); // After var custList = dbconn.executeQuery(query); // Consider var when the initializer provides sufficient information to the reader. // Before ByteArrayOutputStream outputStream = new ByteArrayOutputSt..