[E] Cannot construct instance of ~ xxxDTO (no Creators, like default constructor, exist): cannot deserialize from Object value
·
⚙ Framework/Spring-스프링
Spring Boot 2.7 + Java 17 환경에서 개발하고, Tomcat 8 + Java 17 (내부적으로는 Java 8) 환경에서 빌드를 시도하니 다음과 같은 에러가 발생했다.[2025-04-17 09:35:12.569] [ERROR] [ ajp-nio-0.*.*.0-8019-exec-42 ] c.s.a.c.w.c.e.ErrorHandler.handleException:26 - 에러 발생: Type definition error: [simple type, class com.skmns.aisc.calladmin.web.combination.adminUser.dto.CombinationResetPwReq]; nested exception is com.fasterxml.jackson.databind.e..
[Spring] JPA Enum Converter로 DB Entity Mapping하기
·
⚙ Framework/Spring-스프링
Spring JPA에서 Enum을 데이터베이스 컬럼과 매핑하기 위해 Enum Converter 추상 클래스를 사용할 수 있다.이 방식을 이용하면 Enum을 더 유연하고 안전하게 DB와 연동할 수 있고, 유지보수성이 향상되는 장점이 생김! 일반적인 방식 - 1Enum Converter 없이 일반적으로 Enum을 사용하는 구조(JPA 기본 방식)는 다음과 같다.@Enumerated(EnumType.STRING) : enum 이름("ACTIVE", "INACTIVE")을 DB에 저장@Enumerated(EnumType.ORDINAL) : enum의 순서, index값(0, 1)을 DB에 저장public enum Status { ACTIVE, INACTIVE;}@Entitypublic class State..
[Vue] ESLint에서 TypeScript 코드 문법 인식되지 않는 경우
·
⚙ Framework/Vue-뷰
VSCode에서 Vue 프로젝트에 ESLint를 사용할 때, TypeScript 문법이 인식되지 않아 오류로 판단되는 경우가 있다. 아래 명령을 실행하여 ESLint 설정 파일을 생성한다.npx eslint --init 질문이 나오면 다음과 같이 답변한다.How would you like to use ESLint?To check syntax, find problems, and enforce code style (문법 검사 + 스타일 규칙 적용)What type of modules does your project use?JavaScript modules (import/export) (Vue + TypeScript + Vite 프로젝트는 ESM 사용)Which framework does your projec..
[Vue+Spring] 파일 검증 로직 구현 (+ MIME 타입, 시그니처란?)
·
⚙ Framework
파일 업로드 구현 시 보안상의 이유로 파일 검증 로직이 포함되어야 한다. 검증은 파일명, 파일 크기, 확장자, 위변조에 대해 수행되어야 하며 위변조의 경우 MIME 타입과 시그니처를 확인하면 된다. 파일 위변조 검증 방식1) MIME 타입 검증MIME 타입(Multipurpose Internet Mail Extensions)은 파일의 형식을 나타내는 표준 방식으로, Content-Type 헤더에서 확인할 수 있고 브라우저나 서버에서 파일이 어떻게 처리될지를 결정하는 데 사용된다.파일 확장자 기반 검증 (위험)example.jpg 같은 확장자를 보고 image/jpeg인지 확인하는 방식 → 쉽게 변경 가능하여 보안성이 낮음OS 또는 언어별 내장 MIME 타입 검출 기능 사용 → 신뢰할 수 있으나 MIME ..
[Vue+Spring] 파일 업로드 구현 - 서버에 File 저장하기
·
⚙ Framework
[Vue] 파일 업로드 구현 - 반응형 API 시스템에서 File 객체 불러오는 방법반응형 APIVue는 반응형 API 시스템을 이용한다. 아래와 같은 기능들이 있는데, 자세한 내용은 따로 포스팅을 쓸 예정.reactive() : 반응형 객체를 만들 때 사용 - 객체만 가능ref() : 단일 값을 반응형으idox.tistory.com 이전 포스팅에 업로드한 바와 같이, Vue에서는 반응성 객체 내에서 file_, blob_ 정보를 유지하기 위해 Base64 인코딩 방식을 사용해야 한다. 하지만 서버에 Base64 형태로 데이터를 전송하게 되면 용량이 33% 증가한다는 점을 비롯한 단점이 존재하여 MultiPart 형태의 File 객체로 다시 변환하여 전송하는 과정이 필요하다. BLOB이란?BLOB(Bin..
[Vue] 파일 업로드 구현 - 반응형 API 시스템에서 File 객체 불러오는 방법
·
⚙ Framework/Vue-뷰
반응형 APIVue는 반응형 API 시스템을 이용한다. 아래와 같은 기능들이 있는데, 자세한 내용은 따로 포스팅을 쓸 예정.reactive() : 반응형 객체를 만들 때 사용 - 객체만 가능ref() : 단일 값을 반응형으로 만들 때 사용 - 숫자, 문자열, 배열 등 모든 타입에서 사용 가능 / .value로 접근 및 변경computed() : 계산된 값을 자동으로 업데이트watch() : 특정 반응형 값의 변화를 감지하여 추가적인 작업을 수행할 때 사용watchEffect() : 종속성을 자동으로 추적하여 실행되는 반응형 감시자toRef(), toRefs() : reactive() 객체의 특정 속성을 ref()로 변환할 때 사용customRef() : 직접 반응형 상태의 동작을 제어할 때 사용Vue.j..
[Spring] 운영 환경에서의 로그 모니터링 레벨 구분
·
⚙ Framework/Spring-스프링
모든 시스템은 추적을 위해 로깅이 필요하다. 일반적으로 개발 환경에서는 DEBUG, 운영 환경에서는 INFO 레벨로 사용한다.  로그 레벨TRACE > DEBUG > INFO > WARN > ERROR > FATAL 로그 레벨 설정 시 TRACE로 설정하면 TRACE 이상 등급의 모든 로그 표시, INFO 설정 시 INFO 이상 로그가 출력된다.TRACE : 모든 레벨에 대한 로그 추적DEBUG : 개발 단계에서 사용, 주로 SQL 확인INFO : 운영에 참고될 수 있는 데이터나 애플리케이션 흐름 확인WARN : 로직 상 유효성 확인, 예상 가능한 문제로 인한 예외 처리ERROR : 예상하지 못한 심각한 문제가 발생하는 경우 로그 포맷# Logback 포맷14:18:17.635 [Name Of Threa..
[Vue.js] 설치 및 시작하기
·
⚙ Framework/Vue-뷰
Frontend 프레임워크로 Vue.js를 선정하고, 설치부터 시작하는 과정까지를 기록한다.Vue.js 버전 : 3.5.13 (최신 안정 릴리즈) VS Code 설치터미널을 사용해야 하고, 비교적 가볍게 운영 가능한 IDE로 VS Code를 선택. Extension을 이용하면 더 편하기도 하고? Visual Studio Code - Code Editing. RedefinedVisual Studio Code redefines AI-powered coding with GitHub Copilot for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite p..