반응형

Programming 362

@MappedSuperclass 조금 다르게 사용해보기

@MappedSuperclass 어노테이션을 조금 다르게 사용하는 방법에 대한 포스팅입니다. 해당 어노테이션의 핵심 기능은 '공통 매핑 정보를 간편하게 관리'하기 위해서 인데요. 때문에 프로젝트에서는 일반적으로 createdDate와 modifiedDate 같은 공통 필드를 관리하는 BaseTimeEntity 클래스에서 가장 많이 사용됩니다. 아래 내용은 BaseTimeEntity가 아닌 @MappedSuperclass 어노테이션을 활용해 '완전히 똑같은 필드를 가진, 같은 종류지만 서로 다른 Entity를 하나의 Repository로 관리하는 방법'을 정리한 포스팅입니다. 단순하게 공통 매핑 정보를 관리하는 것과는 조금 다르게 사용해보았기 때문에 내용 참고해보시고 필요에 따라 적용을 고려해보시면 될 것..

Programming/Java 2022.07.18

스프링 시큐리티 SecurityContextHolder에 Authentication(인증) 정보가 저장되는 과정

Spring Security에서 인증이 완료된 Authentication(인증 정보)를 SecurityContextHolder에 저장하는 과정에 대해 정리한 내용입니다. Spring Security 시큐리티 동작 원리 이해하기 - 1 스프링 시큐리티 (Spring Security)는 스프링 기반 어플리케이션의 보안(인증과 권한, 인가)을 담당하는 스프링 하위 프레임워크입니다. 보안과 관련해서 체계적으로 많은 옵션들을 제공해주기 때문 wildeveloperetrain.tistory.com 인증이 진행되는 과정 및 구현 내용이 정리된 포스팅입니다. 인증을 통해 Authentication을 반환하는 과정이 담겨있기 때문에 동작 원리를 파악하기 위해서는 먼저 보고 오셔도 좋을 것 같습니다. (WebSecurit..

Vue.js 프로젝트 기본 구조에 대한 이해

Vue.js에 대한 공부를 시작하면서 가장 기본이 되는 프로젝트의 구조와 각각의 부분에 대한 이해를 하기 위해 정리한 내용입니다. 잘못된 부분은 댓글로 남겨주시면 확인하고 공부하면서 다시 수정하겠습니다. 미리 감사드립니다. 'Vue 3'를 기본으로 'vuex'와 'router'를 사용하는 프로젝트를 생성한 결과입니다. package.json, package-lock.json, node_modules 먼저 package.json, package-lock.json, node_modules 폴더에 대해서 살펴보겠습니다. package.json 파일은 프로젝트에 대한 정보를 담고 있는데요. 프로젝트의 이름, 버전, private 여부, 배포 및 개발에서 사용할 모듈 정보, 실행 명령어, 지원할 브라우저에 대한 ..

Programming/Vue 2022.07.05

@Valid @Validated 동작 원리 파헤치기

Custom Validator, Message Bundle 등의 유효성 검사와 관련된 작업을 하면서 @Valid와 @Validated 어노테이션의 동작 원리에 대해 궁금해져서 해당 부분을 정리한 내용입니다. (코드를 살펴봤지만 아직까지 세부적으로 이해하지 못한 부분이 많습니다. 설명이 부족할 수 있다는 점 미리 양해 부탁드리겠습니다.) @Valid @Validated 차이점, Spring에서는 유효성 검증을 위해 자바 표준 스펙인 JSR-303의 @Valid Annotation을 많이 사용합니다. 하지만 어떤 경우 @Validated Annotation도 사용되는 것을 볼 수 있는데요. 두 어노테이션의 차이점은 무엇일까요? @Validated 어노테이션은 JSR-303의 업그레이드 버전으로 @Valid ..

(Spring Boot) Custom Validator 적용하는 방법, 단일 및 다중 필드

프로젝트에서는 클라이언트의 요청 값을 검증해야 하는 많은 경우가 있습니다. 이때 Java에서는 'Bean Validation'을 통해 유효성 검증을 실시하는데요. 'Bean Validation'은 빈 유효성 검사를 위한 Java API 사양으로 @NotNull @NotBlank @Email @Positive 등과 같은 어노테이션을 사용해서 빈의 속성이 유효성을 충족하는지 확인하게 됩니다. (JSR-303 또는 JSR-380 이라고도 불리며, Bean Validation 1.0 => JSR-303이고 Bean Validation 2.0 => JSR-380입니다.) JSR-303, JSR-380이 제공해주는 Validation의 종류는 다양하지만, 서비스에 따라서 기본적으로 제공되는 검증 어노테이션 외에 유..

Spring swagger 3 사용방법(springdoc-openapi-ui)

스프링 부트에서 'springdoc-openapi-ui'를 사용하여 swagger3를 적용하는 방법에 대해서 살펴보겠습니다. 'springfox-swagger-ui', 'springfox-swagger2'를 사용하는 방법과는 다른 방법이며, 오로지 'springdoc-openapi-ui' 하나만 사용하여 swagger를 설정하는 방법입니다. 스웨거를 적용하는 과정에서 실행 시 오류가 발생하는 경우는 대부분 spring boot의 버전과 springdoc의 버전 차이가 원인일 수 있는데요. 저 같은 경우는 테스트 시 spring boot 2.7.0 버전에 springdoc 1.5.2 버전으로 실행했을 때, 실행 자체에서 BeanCreationException 오류가 발생했었는데, springdoc의 낮은 ..

데이터 타입 CHAR, VARCHAR의 차이점, 무엇을 써야할까?

대표적인 문자열 데이터 타입에는 CHAR, VARCHAR가 있습니다. 이 두 가지의 차이점은 무엇인지, 각각의 특징은 무엇인지에 대해서 살펴보겠습니다. 먼저 데이터 타입(DataType)에 대해서 알아보면, 컴퓨터 시스템과 프로그래밍 언어의 측면에서 보는 데이터 타입(자료형)은 실수, 소수, 정수, 문자열, 날짜 및 시간 타입 등, 여러 종류의 데이터를 식별하는 타입을 말하는데요. 자료형에 대해 가능한 값, 수행할 수 있는 명령어, 데이터의 형태 및 의미, 크기, 해당 자료형의 값이 저장되는 방식을 이야기합니다. 데이터베이스의 측면에서 보는 데이터 타입 역시 비슷한데요. 테이블을 정의할 때는 컬럼 별로 저장할 수 있는 타입까지 명시해야 하는데, 컬럼에 들어갈 수 있는 데이터 유형은 일반적으로 숫자형, 문..

구글 클라우드 플랫폼 GCP 무료 서버 생성하기(22년 6월 기준)

구글 클라우드 플랫폼(Google Cloud Platform) 무료 서버 생성하는 방법에 대해서 알아보겠습니다. 구글링을 통해 GCP 무료 서버 구축 방법을 찾아보면 포스팅이 작성된 기간에 따라 서버 구축에 관련된 내용이 달라 헷갈릴 수 있는데요. 해당 포스팅은 '2022년 6월 기준' 구글 가이드 무료 사양에 맞는 서버 생성 방법을 작성한 글입니다. 아래 링크는 위 이미지의 출처인 구글 가이드를 첨부해두었으니 참고 부탁드리겠습니다. https://cloud.google.com/free/docs/gcp-free-tier/?hl=ko#compute (구글 가이드 링크) 위 무료 사항에서 주목해야 할 부분은 리전, 인스턴스 머신, 디스크 및 용량인데요. 리전은 오리건(us-west1), 아이오와(us-cen..

Programming/Web 2022.06.20

구글 클라우드 플랫폼(GCP) 프로젝트 삭제하는 방법

구글 클라우드 플랫폼(Google Cloud Platform)에서 사용중인 프로젝트를 삭제하는 방법입니다. 기존에는 프로젝트를 생성하여 API만 사용하다가 GCP 무료 서버를 만들기 위해서 들어왔는데, 기존에 만들어놓은 사용하지 않는 프로젝트들을 제거하려는 과정에서 생각보다 삭제 방법이 바로 보이지 않아서 혹시 찾으실 분들을 위해 방법 남겨놓습니다. 먼저 GCP 메인 화면에서 삭제하고자하는 프로젝트를 선택하여 들어갑니다. 프로젝트 삭제는 프로젝트 설정 부분에서 이뤄지는데요. 우측 상단의 버튼을 통해 프로젝트 설정으로 들어가거나, 좌측 IAM 및 관리자의 카테고리 중 설정 버튼을 통해 프로젝트 설정으로 이동합니다. 설정 우측 부분에 종료 버튼을 통해 프로젝트를 종료할 수 있는데요. 프로젝트는 즉시 종료되는..

Programming/Web 2022.06.19

JavaScript 클립보드 복사하는 방법(Clipboard API, clipboard.js)

먼저 클립보드(Clipboad)란, '복사'하거나 '잘라내기'한 텍스트 또는 파일 등을 '붙여넣기' 하기 전까지 임시로 저장해두는 공간입니다. 자바스크립트 클립보드 복사하는 방법에는 document.exeCommand() 함수를 사용하는 방법과 Clipboard API를 사용하는 방법, clipboad.js 라이브러리를 사용하는 방법이 있는데요. document.execCommand() 함수의 경우 (2022년 6월) 현재 정상적으로 동작은 하지만 웹 표준에서 Deprecated 되었기 때문에 공식문서에서도 사용되지 않으며, 대체 방법으로 Clipboad API 사용이 권장되고 있습니다. 하지만 Clipboad API의 경우 Safari 13.1 버전부터 https 환경에서만 지원한다는 아쉬운 점이 있는..

반응형