개발자가 되며 가장 배우고 싶었던 것 중 하나는 rest(json)이었다. json을 배우고 싶었던 이유는 공공api를 활용할 수 있기 때문이다. 수많은 정보들은 json 형태로 공유되고 있고, 그 자료들을 활용하기 위해서는 rest와 json 개념을 이해하는 것이
타임리프(Thymeleaf)는 현재 스프링부트에서 밀고 있는 프레임워크이다. JSP는 자바소스(.java)에서 바이트코드(.class)로 변환하는 과정을 거친다. 그러나 타임리프는 그런 과정 없이 순수한 html에 태그를 추가하여 html을 조작한다. 아래는 H
매개변수를 RequestParam으로 받을 때, 해당 값이 null일 수도 있다. 컨트롤러에서는 @Nullable @RequestParam(required=false)등을 통해 처리한다. 하지만 타임리프에서도 null처리를 해야한다. 그 방법은 (객체)?.(필드값)
json으로 받은 date의 값은 아래와 같다. datetime: "2020-06-09T00:00:00.000+09:00"처음에는 이 값을 자바스크립트를 통해 date객체로 변환한 후 스프링 컨트롤러의 LocalDateTime으로 변환하려 하였다. 그러나 계속 실패했다
Service 나 Repository의 경우 테스트를 자주 사용한다. 매우 효율적이다. 일단은 데이타베이스에 접근하거나 어플리케이션을 로딩하여 브라우저에서 찾아다닐 필요가 없기 때문이다. 그저 코드 몇 줄이면 된다. 그리고 해당 코드는 그 다음 과정의 코드가 된다
JPA의 n+1 문제를 해소하는 다양한 방식이 있다. 가장 기본적으로는 페치 전략을 lazy로 바꾼다. 그리고 join을 할 때 fetch를 하거나 distinct를 하여 카다시안 곱 문제를 해소한다. 이런 방식으로 도전을 했는데 실패한 문제가 있었다. 해당 코드는 아
프로젝트 진행 중 CommandLineRunner를 사용한 순간이 있었다. 통합 테스트를 진행하면 스프링부트를 동작시킨다. 그러므로 원치 않게 CommandLineRunner 가 작동하였다. 그리고 해당 빈은 while(true) 로 계속 동작하는 작업이었고, 그래서
스프링은 싱글톤으로 어플리케이션을 동작한다.그러므로 클래스 하나를 component로 만들면 당연하게도 하나만 생성된다.그런데 하나의 클래스에 대해 여러 개의 빈을 만들고 싶으면 어떻게 하는가?익명 클래스를 통해 해결 할 수 있다. 익명 클래스를 생성할 경우 각 클래스
컴파일에서 문제를 잡아내기, 다만 완벽하지는 않다. 아래의 코드가 있다고 하자. String defaultHelpMsg = telegramCommandProperties.getHelp().getDefaultHelpMsg(); 메서드가 존재하지 않으면 컴파일 오류가 발생
스프링이 엑셀을 추출하거나 생성할 때 poi라는 라이브러리를 주로 사용한다. poi는 활용하기 다소 까다롭다. 왜냐하면 1) 엑셀 자체의 구조가 복잡하고 2) 데이타 타입 변경의 문제가 있다. 파일 -> sheet -> row -> cell엑셀을 추출할 때 위의 순서로