API 요청의 처리가 오래 걸리게 되면, java.net.SocketTimeoutException 가 발생합니다. tomcat 문서를 보면, defualt 값은 1분으로 되어 있습니다.( tomcat 8.5 버전 기준 ) Spring의 property 파일( application.yaml )의 timeout 시간을 늘려주면 됩니다. -1을 설정하면 timeout이 무한대가 되어 timeout이 발생하지 않습니다. 그렇지 않으면 ms 단위로 원하는 시간을 입력해주면 됩니다. server: tomcat: connection-timeout: -1
Jackson objectmapper는 Java 오브젝트와 JSON 간에 직렬화, 역직렬화를 해주는 역할을 합니다. Jackson 사용을 위해 의존성을 추가합니다. databind는 jackson-annotations, jackson-core 의존성도 포함되어 있습니다. com.fasterxml.jackson.core jackson-databind 2.13.2.2 Cat 클래스를 이용하여 직렬화, 역직렬화를 해보겠습니다. @Getter @Setter @NoArgsConstructor public class Cat { private String name; public Cat(String name) { this.name = name; } } Object to Json ObjectMapper objectMap..
Jackson으로 객체를 직렬화 할 때, 아래와 같이 에러가 발생할 때가 있습니다. 직렬화를 할 때, 객체의 getter를 사용하여 변환을 하는데 이 때 에러가 발생하면 아래와 같은 예외가 발생합니다. Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.example.springapp.animal.Cat and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) 코드를 보면 ..
alt( option ) + drag 1~3행의 두 번째 커서를 동시에 편집하기 위해서, 안에 커서를 두고 alt( option )를 누른 상태에서 마우스를 눌러 아래 또는 아래로 드래그를 하면 아래와 같이 여러 줄에 같은 위치에 커서가 위치하게 됩니다. ( sublime text 뿐만 아니라 많은 편집 툴에서 사용할 수 있는 방법입니다. ) 텍스트를 입력하면, 아래와 같이 커서가 있는 행에 동시에 입력이 됩니다. shift + ctrl( command ) + L 편집할 줄을 선택 한 뒤에, 위의 단축키를 입력하면 동시에 편집이 가능합니다. 여러 줄의 마지막에 텍스트를 동시에 입력하고 싶을 때는 alt( option ) + drag로는 할 수 없어서 이 단축키를 활용하시면 됩니다.
Spring Boot 프로젝트의 컨트롤러에서 정의한 url을 모아서 보는 기능을 살펴보겠습니다. IntelliJ Ultimate 버전에서 제공하는 기능입니다. View | Tool Windows | Endpoints 메뉴를 선택합니다. IntelliJ 하단에 Endpoints 탭이 생기면서, 프로젝트 내에 있는 모든 Controller의 endpoints url을 표시해줍니다. Module, type, Framework 메뉴를 이용하여 필터링도 가능하며, 검색 기능으로 url 검색 기능도 가능합니다.
IntelliJ에는 주석을 패턴에 따라 강조해주는 기능이 있습니다. 아래 코드를 보면, 일반 주석은 "regular comments"처럼 회색으로 표기가 되고 FIXME 주석은 강조되어 표현이 됩니다. 기본적으로 등록되어 있는 강조 주석은 todo와 fixme 2가지가 있습니다. 아래 화면이, 기본으로 설정되어 있는 값입니다. 패턴으로 fixme 또는 todo 와 그 뒤에 오는 모든 글자는 강조가 됩니다. 그리고 상단에 체크되어 있는 항목 때문에 멀티라인도 적용이 됩니다. 추가로 패턴을 정의해보겠습니다. refactoring이라는 주석에 아래와 같이 설정을 적용해보겠습니다. 아래 코드를 보면 refactoring 주석에 파란색, bold, Italic, Underscored 효과가 적용되어 있습니다.
Spring에서 HTTP 요청을 하기 위해 RestTemplate를 많이 사용합니다. ( Spring 5.0부터 RestTemplate대신 WebClient을 사용을 추천하므로 legacy 프로젝트를 하시는 것이 아니라면 WebClient로 개발하시는 것을 추천드립니다. RestTemplate는 5.0부터 유지보수만 이루어집니다. 관련 링크 ) RestTemplate의 exchange, getForEntity, postForEntity 등의 API를 이용하여 응답을 ResponseEntity로 한 번에 메모리에 받아옵니다. 일반적인 경우에는 문제가 되지 않지만 응답의 크기가 수백MB이상이 되면 GC가 발생하게 됩니다. 저도 프로젝트를 진행하는 와중에, GC가 발생하여 확인해보니 응답 사이즈가 600MB ..
목차 Annotation? 자바 어노테이션은 자바 코드에 메타 데이터를 제공하기 위해 사용됩니다. @ 문자와 어노테이션 이름으로 구성이 되며, 컴파일러에서는 @ 문자로 시작이 되면 어노테이션으로 판단을 합니다. 어노테이션은 값을 저장할 수 있는 엘레멘트를 가지며, 어노테이션 이름 다음에 괄호 안에 엘레멘트를 정의합니다. @Entity(name = "table") 위의 어노테이션은 Entity라는 이름의 어노테이션이고 name이라는 엘레멘트를 가지며 name 엘레멘트의 값은 table입니다. 어노테이션은 클래스, 인터페이스, 메소드, 메소드 파라메터, 필드, 지역 변수 위에 위치할 수 있습니다. @Entity public class Animal { } Built-in Java Annotations Java..
목차 사용자 정의 어노테이션을 정의하여, 특정 메소드에 정의한 어노테이션을 선언하고 이 어노테이션이 정의 되어 있는 메소드를 찾아 메소드 이름을 출력하는 스프링부트 프로그램을 작성해보겠습니다. Annotation 정의 @interface를 사용하여 Print 어노테이션을 정의합니다. 어노테이션에 3개의 element를 정의합니다. 메소드에 적용 및 런타임에 사용하기 위해 Retention과 Target을 선언합니다. package com.example.anno.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; i..
- Total
- Today
- Yesterday
- SpringBoot
- scala
- Log
- Postman
- AWS
- intellij
- Git
- elasticsearch
- Linux
- Filter
- install
- logstash
- spring boot
- Size
- plugin
- Java
- tomcat
- docker
- error
- Container
- Spark
- Index
- spring
- apm
- mac
- Kibana
- maven
- JPA
- JSON
- gradle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |