본문 바로가기

전체 글

(96)
[JavaScript] split() / join() split() 이란 문자열을 특정 구분자로 나누어 배열에 저장하는 메소드 문법 string.split( separator, limit ); 인자로 separator(구분자)와 limit을 받는다. limit은 최대 분할 개수를 의미하며 생략가능하다.(limit 값을 정하지 않으면 전체를 다 분할한다.) 코드 예제1 // str변수에 'abcd' 문자열을 넣어준다. let str = 'abcd'; // strArr변수에 위에서 생성했던 문자열을 특정 기호(기호를 쓰지 않을 경우 문자하나씩)를 기준으로 나누어 배열형태로 저장해준다. let strArr = str.split(''); 결과 strArr = ['a', 'b', 'c', 'd']; 코드 예제2 // str변수에 'Hello World !!' 문자열..
[Spring] 예외처리 (@ExceptionHandler, @ControllerAdvice) 프로그래밍을 하며 예외처리를 하기 위해서 매번 try-catch를 사용하게 되면 코드가 지저분해지고, 메소드마다 반복적으로 사용하기 때문에 중복, 불편함을 느낄 수 있다. 대신 Spring MVC에서 제공하는 @ExceptionHandler, @ControllerAdvice를 사용하여 일괄적으로 예외처리를 한다면 이러한 불편함을 해결할 수있다. @ExceptionHandler @ExceptionHandler란 @Controller, @RestController 어노테이션이 적용 된 빈에서 발생하는 예외를 캐치하여 하나의 메소드에서 처리할 수 있도록 해주는 어노테이션이다. 즉, 특정 Controller 범위에서 발생하는 예외처리를 전역적으로 처리할 수 있게 해준다. 코드 예제) @Controller pub..
[Java] scan.next() 와 scan.nextLine의 차이 Scanner 클래스를 이용하여 입력받을 때 String 타입의 데이터를 받기 위해서 next() 메소드를 이용할 수 있다. 하지만 next() 메소드를 통해 문자열을 읽을 때, 공백이 포함되면 공백을 기준으로 앞에 한 단어만 읽어 오기 때문에 원하는 입력값이 출력되지 않는 경우가 발생한다. 코드 예시) import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Hello World를 입력한다. String str = sc.next(); System.out.println(str); } } 결과 : Hello 이러한 경우를 방지하기 위해서 공백이 포함..
[Spring] (SpringBoot) SQL 로그 남기기 프로젝트를 진행하며, 예상치 않게 오류가 발생하거나 원하지 않은 데이터가 뿌려진 경험이 있다. 이럴 때 마다 문득 내가 작성한 SQL문에 문제가 있는지 로그로 찍어 보고싶어서 log4j2를 이용하여 SQL문과 데이터를 출력하는 작업을 추가하였다. 1. pom.xml에 log4j2 dependency 추가 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 2. 기존 application.properties 내용 수정 기존 DB 소스코드 #spring.datasource.url: jdbc:mysql://localhost/covid #spring.datasource.username: root #spring.datasource.password: 1234 #sprin..
[Spring] log4j log4j란 log4j는 아파치에서 만든 자바기반의 로그 오픈소스 라이브러리이다. 개발을 하다보면 디버깅을 위해서 System.out.println()을 이용하여 흐름이나 데이터를 출력한 경험이 있을 것이다. 하지만 System.out.println()은 단순히 텍스트만 표시해줄 뿐만 아니라 시스템 성능에도 영향을 미치게된다. 반면 log4j를 사용하게 되면 단순 로그뿐만 아니라 로그 포맷을 통해 에러위치, 출력형식, 출력레벨등을 정의할 수 있기 때문에 로그를 찍는데 여러 방면(성능 부분에서도)에서 더 유리하다고 볼 수 있다. 로그 레벨 log4j는 6개의 로그 레벨을 가지고 있다. 설정파일에서 레벨지정이 가능하고, 그 등급 이상의 로그만 출력할 수 있도록 설정할 수 있다. 예를들어 INFO 등급으로 설..
[Spring] @Transactional @Transactional이란 스프링에서 트랜잭션처리하는 방법 중 하나로, 어노테이션을 활용한 선언적 트랜잭션이라 한다. 여기서 트랜잭션이란 DB의 값을 변경하는 일련의 작업들을 하나의 처리로 묶어 반영(Commit)시키거나 취소(RollBack)시키는 것을 의미한다. 트랜잭션 옵션 1. isolation (격리레벨) - 트랜잭션에서 일관성 없는 데이터 허용 수준을 설정한다. 적용방법 @Transactional(isolation=Isolation.DEFAULT) public void addUser(UserDTO dto) throws Exception { // 로직 구현 } DEFAULT : 기본 격리 수준 = 기본이며, DB의 Isolation Level을 따른다. READ_UNCOMMITED (leve..
[Git] commit 시 contributions이 색칠되지 않는 문제 프로젝트를 진행하면서 깃허브로 프로젝트를 관리하고 있는데 어느 순간부터 커밋을 해도 깃허브에 잔디가 채워지지 않는 문제가 발생하였다. 구글링을 하며 찾아본 결과 깃허브 계정의 이메일과 커밋하는 계정의 이메일이 일치하지 않아 발생한 문제였다. 해결 1. 깃허브 이메일 확인 깃허브 홈페이지에서 우측 상단의 프로필 클릭 -> Settings -> Emails에서 본인의 이메일을 확인한다. 2. STS상단의 window -> preferences -> git -> Configuration User Settings 탭에서 Add Entry... 을 클릭하여 Key 입력칸에 user.email을 입력, Value에는 본인의 깃허브 이메일을 입력하여 추가해준다. 2. 커밋 시 자신의 이메일이 기입됐는지 확인한다. A..
[Spring] SpringSecurity 비밀번호 암호화 우리가 프로젝트를 진행하다보면 회원가입기능을 구현할 때가 종종있다. 회원가입을 구현할 때 회원의 정보를 DB에 넣게 되는데, 비밀번호 같은 경우 그대로 DB에 넣게되면 보안에 매우 취약해지기 때문에 비밀번호를 암호화하여 암호화된 패스워드를 DB에 넣을 수 있도록 하여야한다. 비밀번호를 암호화하는 방법에는 여러가지가 있는데, 스프링시큐리티에서 제공하는 BCrpyt를 이용한 비밀번호 암호화에 대해서 알아보고자 한다. 1. pom.xml에 Security 추가 org.springframework.boot spring-boot-starter-security BCrypt기능을 사용하기 위하여 pom.xml에 시큐리티를 추가한다. 다음과 같이 메이븐에 시큐리티를 추가하고 프로젝트를 실행하면 다음과 같은 화면이 뜰 ..