본문 바로가기

전체 글

(404)
[Spring MVC] 체크 예외(Checked Exception), 언체크 예외(Unchecked Exception) 체크 예외(Checked Exception) : 발생한 예외를 잡아서(catch) 체크한 후에 해당 예외를 복구 하든가 아니면 회피 하는 등의 어떤 구체적인 처리를 해야 하는 예외 Ex) ClassNotFoundException 등 언체크 예외(Unchecked Exception) : 예외를 잡아서(catch) 해당 예외에 대한 어떤 처리를 할 필요가 없는 예외를 의미하기에 명식적으로 잡아서 어떤 처리를 할 필요가 없음 Ex) NullPointException, ArrayIndexOutOfBoundsException 등 >> 대부분 개발자가 코드를 잘못 작성해서 발생하는 오류들은 RuntimeException을 상속한 예외들이며, Java나 Spring에서 수많은 RuntimeException을 지원해주..
[Java] About 클래스와 객체 [클래스] : 객체의 설계도 또는 틀 (Ex. 붕어빵을 만드는 붕어빵 틀) : 객체를 정의해 놓은 것으로 객체를 생성하는데 사용 : 데이터와 함수의 결합 (구조체 + 함수) * 구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간 사용자정의 타입(user-defined type) : 클래스에서 서로 관련된 변수들을 묶어 하나의 타입으로 새로 추가하는 것 Ex) 3개의 시간을 다뤄야 할 경우 각 시/분/초에 대한 변수를 선언하거나 배열로서 정의하는 것은 불편함과 복잡함, 분리되어 있다는 점을 고려했을 때 데이터의 혼란이 생길 수 있음 class Time{ int hour; int minut; float second; } >> 시/분/초를 하나로 묶는 사용자정의 타입, ..
[Spring MVC] Spring MVC 예외 처리 (@ExceptionHandler, @RestControllerAdvice) @ExceptionHandler : Spring MVC 예외 처리 : ErrorResponse 클래스를 이용해 Reqeust Body에 대한 유효성 검증 실패시 필요한 에러 정보만 담아 클라이언트에게 응답으로 전송 (기존의 에러 메시지보다 자세한 내용의 에러 메시지) [단점] 1) 각각의 Controller 클래스에서 ExceptionHandler 애너테이션을 사용하여 Request Body에 대한 유효성 검증 실패에 대한 에러 처리를 해야하기 때문에 각 Controller 클래스마다 코드 중복이 발생함 2) Controller에서 처리해야 되는 예외가 유효성 검증 실패에 대한 예외만 있는 것이 아니기 때문에 하나의 Controller 클래스 내에서 @ExceptionHandler를 추가한 에러 처리 핸..
[Spring MVC] DTO 클래스와 Entity 클래스 역할 분리 필요 이유 DTO와 Entity 클래스를 매핑해서 사용하는 이유는 여러가지 존재하지만 그 중 대표적인 이유는 아래 3가지 DTO 클래스 - API 계층에서 요청 데이터를 전달 받고, 응답 데이터를 전송하는 것이 주 목적 Entity 클래스 - 서비스 계층에서 데이터 액세스 계층과 연동하여 비즈니스 로직의 결과로 생성된 데이터를 다루는 것이 주 목적 1. 계층별 관심사 분리 : 사용되는 계층이 달라 기능에 대한 관심사가 다름 : 하나의 클래스나 메서드 내에서 여러 개의 기능들을 구현하고 있는 것은 객체 지향 코드 관점에서도 리팩토링 대상이 됨 2. 코드 구성의 단순화 : DTO 클래스에서 사용하는 유효성 검사 애너테이션이 Entity 클래스에서 사용될 경우 JPA에서 사용하는 애너테이션가 뒤섞여 유지보수하기 어려운 ..
[Spring Boot] Spring Boot 프로젝트 생성하기 (feat.스타터 사이트) Spring Boot 프로젝트 생성하기 인텔리제이에서 스프링 부트 프로젝트를 생성할 수 있는 방법은 2가지가 있는데, Ultimate 버전을 쓰는 경우와 아닌 경우로 나눌 수 있다. 기본적으로 부트 프로젝트를 생성할 때에는 아래의 링크를 바탕으로 설치가 되는데, 기본 버전의 경우에는 이를 직접 만들어와서 폴더를 열어주면 된다. https://start.spring.io 해당 사이트로 이동하면 Spring Boot 스프링 프로젝트 설정 및 다운이 가능하며, Ultimate의 경우에는 인텔리제이에서 Spring initializr를 클릭 및 설정 후 Create 하여 사용이 가능하다. 설정하는 방법은 동일하니 아래 글을 참고하길 바란다. [프로젝트 생성 방법] 1. Project | Type 선택 : Mav..
[기타] 정규표현식 (계속 새로운 정규표현식 업데이트 예정) [정규표현식 문법] ^ 문자열 시작 $ 문자열 종료 . 임의의 한 문자(단 \은 넣을 수 없음) * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나 있음 [ ] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다. { } 횟수 또는 범위를 나타냅니다. ( ) 소괄호 안의 문자를 하나의 문자로 인식 | 패턴 안에서 or 연산을 수행할 때 사용 \ 정규 표현식 역슬래시(\)는 확장문자 (역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미) \b 단어의 경계 \B 단어가 아닌것에 대한 경계 \A 입력의 시작 부분 \G 이전 매..
[Java] BufferedReader / BufferedWriter 사용법 [BufferedReader, BufferedWriter 설명] BufferedReader : Scanner과 유사 >> 입력 BufferedWriter : System.out.println()과 유사함 >> 출력 장점 : Scanner 대신 BufferedReader을 사용하는 경우가 많은데 이는 실행 속도가 BufferedReader가 훨씬 빠르기 때문에 많은 양의 데이터를 처리해야 하는 경우 BufferedReader을 사용하는 것이 좋음 단점 : Enter만 경계로 인식함 : 받는 데이터를 String으로 고정하기 때문에 입력받은 데이터의 타입을 변경해야 할 경우 가공하는 작업이 필요함 [사용법] 1) 아래 import가 추가적으로 필요함 import java.io.BufferedReader; i..
[카카오 화재] 이중화, DR 이중화 : 시스템의 가용성을 높이기 위해 장비를 다중화 시키는 방법 : 가용성을 높여주기 때문에 고가용성을 뜻하는 HA(Hight Avaliability)라는 용어와 혼재해 사용함 즉, 하나의 서버에 문제가 발생하더라도 다른 장비에서 서비스가 될 수 있도록 구현하는 것 (1개의 다른 서버가 다운되더라도 다른 1개의 서버로 커버하는 것) >>이중화의 경우 동일한 서버가 1개 더 존재하며 비용이 그만큼 많이 들 수 있음. DR(Disaster Recovery) : 재해 복구라고 칭함 : 재해로부터 데이터센터를 보호하는 1차 보호 전략으로서, 재해가 발생할 경우 재해 복구 계획(disaster recovery plan, DRP)를 통해 유지 >> 재해로 인해 데이터센터에 문제가 발생하더라도 다른 데이터센터에서..