개발을 하던 도중에 종종 문자열 유효성 검증(ex: Null 검증)이 필요할 때가 있다. 해당 상황에서 사용하는 메소드를 살펴보고자 한다. 1. String.isEmpty() - Java에서 제공하는 String 클래스의 isEmpty()메소드가 있다. - 해당 메소드로 문자열 유효성 검사를 진행이 가능하다. - 그러나, 해당 메소드로는 Null 체크가 안되어, 로직에서 String이 null 일 경우에는 NullPointerException(NPE)이 발생한다. - 아래 이미지에서와 같이 length로 길이는 체크하지만 null은 체크하지 않는다. 2. (deprecated)StringUtils.isEmpty() - 스프링에서 제공하는 Util 클래스 중 StringUtils 클래스에도 isEmpty(..
테이블을 생성 시, 중복 저장을 막기 위해 다양한 컬럼에 Unique Key 를 등록한다.(Primary Key와는 다름) 이때, 데이터를 Insert 하는 경우, Unique Key 가 존재하는 값에 대해 실행하면 에러가 발생한다. 이러한 경우에 해당 row(데이터)를 Delete 후 다시 Insert 하는 방법도 있지만, 삭제에 대한 위험요소도 있다. 이때, on duplicate key update 를 사용하여 Unique Key 값이 있는 경우에 Insert 가 아닌 update를 해주는 방법이 있다. 1. Table(테이블) 생성 - 간단하게 테이블을 생성한다. //기존 테이블 삭제 DROP TABLE TEST_MEMBER; //테이블 생성 CREATE TABLE TEST_MEMBER ( mem..
Java 에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder 가 있습니다. 항상 개발할때 대부분 String으로 사용하였는데, 작은 시스템에서는 크게 이슈가 발생하지는 않습니다. 그러나 큰 서비스와 시스템에서는 연산횟수가 많아지거나 멀티 쓰레드, Race Condition 등의 상황이 발생하면서 무작정 String으로만 사용한다면 성능에 큰 문제가 발생합니다. 이번 글에서는 각 특징을 이해하고, 상황에 맞는 적절한 클래스가 무엇인지 정리해보도록 하겠습니다. 1. String vs StringBuffer/StringBuilder - String 객체는 한번 값이 할당되면 그 공간은 변하지 않으며, 이것을 불변(Immutable)성 이라 합니다. - Str..
1. 에러 발생 상황 - Vue.js와 SpringBoot 간에 Axios를 통한 Rest 통신 시 415 에러가 발생하였다. 2. 원인 - vue.js에서 axios를 사용하여 통신시 기본적으로 content-type 이 x-www-form-urlencoded 로 설정되어 있다. 3. 에러 발생시 해결법 - vue.js 에서 axios 설정하는 곳에서 content-type 을 직접 설정하여 사용한다. - ex 1) axios.defaults.headers.get['Content-Type'] = 'application/json'; - ex 2) let test = { headers: { 'Content-Type': 'application/json' } , url: '/localhost:8080' , m..
인텔리제이에서 종종 개발중에 갑자기 class 파일들을 못 읽어오는 경우가 있었다. 빌드를 다시 해도, .idea 파일을 지워보고 재실행 시켜봐도 동일했다. 구글링을 통해 프로젝트 클린을 통해서 해당 에러를 잡을 수 있었다. 1. File -> Invalidate Caches / Restart ... 클릭 2. Invalidate and Restart 클릭
인텔리제이로 SpringBoot 프로젝트를 Gradle로 할때 종종 우측에 Gradle 탭이 노출 안되어 dependency나 기타 작업 시 불편할 때가 있다. 이때는 아래와 같이 간단하게 설정할 수 있다. 1. 해결 build.gradle 마우스 우클릭 -> Import Gradle Project 선택
Vue + SpringBoot + Mysql 를 이용한 Todo 구현(1) - 프로젝트 구성하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(2) - 프로젝트 환경 설정하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(3) - Todo API 개발하기(1) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(4) - Todo API 개발하기(2) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(5) - Todo 화면 개발하기(1) - 컴포넌트 구성 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(6) - Todo 화면 개발하기(2) - Vuex 적용 이전 글에서 Vue.js 에서 서버와 통신하여..
Vue + SpringBoot + Mysql 를 이용한 Todo 구현(1) - 프로젝트 구성하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(2) - 프로젝트 환경 설정하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(3) - Todo API 개발하기(1) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(4) - Todo API 개발하기(2) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(5) - Todo 화면 개발하기(1) - 컴포넌트 구성 (끝) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(7) - Todo 화면 개발하기(3) - 화면 개발 이전 글에서는 화면 컴포넌트 구성 및 cs..
Vue + SpringBoot + Mysql 를 이용한 Todo 구현(1) - 프로젝트 구성하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(2) - 프로젝트 환경 설정하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(3) - Todo API 개발하기(1) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(4) - Todo API 개발하기(2) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(6) - Todo 화면 개발하기(2) - Vuex 적용 (끝) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(7) - Todo 화면 개발하기(3) - 화면 개발 이전까지 API를 개발하면서 Backend..
Vue + SpringBoot + Mysql 를 이용한 Todo 구현(1) - 프로젝트 구성하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(2) - 프로젝트 환경 설정하기 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(3) - Todo API 개발하기(1) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(5) - Todo 화면 개발하기(1) - 컴포넌트 구성 Vue + SpringBoot + Mysql 를 이용한 Todo 구현(6) - Todo 화면 개발하기(2) - Vuex 적용 (끝) Vue + SpringBoot + Mysql 를 이용한 Todo 구현(7) - Todo 화면 개발하기(3) - 화면 개발 이전 글에 이어서 serv..