Spring
-
Spring JPA Pageable 처리 - sort 및 Page 처리(totalElements)Spring/JPA 2024. 1. 9. 20:38
Pageable Pagination 기능을 편리하게 사용할 수 있도록 JPA는 Pageable이라는 객체를 제공한다. controller 에서 부터 pageable 관련 파라미터를 받을 수 있다. 정렬 기능 @GetMapping("/") public ResponseEntity getData( @PageableDefault(size = 10, sort = "reqDt", direction= Sort.Direction.DESC) Pageable pageable) // reqDt 에 대한 내림차순 정렬 @SortDefault 위의 방식은 정렬을 한가지만 할 수 있어, 여러 정렬 조건을 추가하려면 @SortDefault 를 추가하면 된다. @GetMapping("/") public ResponseEntity g..
-
spring webflux mono excel dowonlad(poi 라이브러리)Spring/spring boot 및 기타 2023. 6. 27. 14:55
excel poi 라이브러리 org.apache.poi poi-ooxml 5.2.3 spring webflux 에서는 HttpServletResponse 를 사용하지 않아 header 에 xlsx 정보를 넣어주는부분에서 spring 일반 샘플대로 하면 오류가 생길 것이다. HttpHeaders 에 set 해주고 Mono.just 에 headers 를 세팅해주면 된다. import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.HttpHeaders; imp..
-
spring boot 3 r2dbc 설정(mysql)Spring/spring boot 및 기타 2023. 6. 23. 17:55
필요한 라이브러리 org.springframework.boot spring-boot-starter-data-r2dbc io.asyncer r2dbc-mysql com.mysql mysql-connector-j runtime 설정 코드 @Configuration @EnableR2dbcRepositories public class R2DBCConfiguration extends AbstractR2dbcConfiguration { @Override @Bean public ConnectionFactory connectionFactory() { ConnectionFactory connectionFactory = ConnectionFactories.get(ConnectionFactoryOptions.builder(..
-
spring netty thread sleep, webflux 에서 sleep 어떻게 하는게 나을까Spring/spring boot 및 기타 2023. 6. 14. 12:12
webflux 를 사용하면 spring boot 내장서버가 tomcat 에서 netty 로 사용해야 하는데, netty 가 비동기에 유리한 서버이다 보니, sleep 을 주고 싶은 로직이 있을 떄 sleep 을 주기가 비효율적이다 Spring Netty를 사용할 때 Thread.sleep()를 사용하여 지정된 시간 동안 스레드 실행을 일시 중지 할 수 있다 . 하지만 이벤트 루프를 차단하고 성능 문제를 일으킬 수 있으므로 Netty 애플리케이션에서 와 같은 차단 작업을 사용하는 것은 일반적으로 권장되지 않는다 . 대신 Netty는 패키지 에서 사용할 수 있는 ScheduledExecutorService를 사용하여 작업 지연을 위한 비동기 대안을 제공한다 io.netty.util. schedule()의 방..
-
spring @ControllerAdvice, @ExceptionHandler 예외처리 방법Spring/Annotation 2023. 6. 8. 18:02
@ExceptionHandler @ExceptionHandler 는 @Controller , @RestController 가 적용된 Bean 에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능이다. @ExceptionHandler 에 설정한 예외가 발생하면 handler가 실행된다. @RestController public class MyRestController { ... ... @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; } } 위와 같이 적용하기만 하면 된다. @ExceptionHandler라..
-
[스프링] @Retryable - 특정오류시 재시도Spring/Annotation 2023. 3. 29. 11:53
특정 Exception이 발생했을 경우 일정 횟수만큼 재시도할 수 있는 어노테이션이다. 예를 들어, 서비스 내에서 다른 서비스에 있는 API를 호출할 때 간헐적으로 통신 오류가 발생할 수 있다. 이럴 때 특정메소드에 재시도 할 수 있는 기능이 있다. 사용법은 아주 간단하다. 1. Spring Application에 @EnableRetry 어노테이션 추가 2. 재시도 하고 싶은 메소드에 @Retryable 어노테이션 추가 - include : 여기에 설정된 특정 Exception이 발생했을 경우 retry한다. - exclude : 설정된 Exception 재시도 제외 - maxAttempts : 최대 재시도 횟수 (기본 3회) - backoff : 재시도 pause 시간 @Retryable(maxAtte..
-
spring boot 3.0 추가되는 점(spring 6)Spring/spring boot 및 기타 2023. 1. 10. 18:58
Spring Boot 2.x -> 3.0 차이 최소 요구사항 변경 (M4 기준) Gradle 7.5 Groovy 4.0 Jakarta EE 9 Java 17 Kotlin 1.6 Hibernate 6.1 Spring Framework 6 AOT maven, gradle 플러그인 제공 native 지원 기능 확대 spring 3.0 지원 라이브러리 Spring AMQP 3.0. Spring Batch 5.0. Spring Data 2022.0. Spring GraphQL 1.1. Spring HATEOAS 2.0. Spring Integration 6.0. Spring Kafka 3.0. Spring LDAP 3.0. Spring REST Docs 3.0. Spring Retry 2.0. Spring Se..
-
[spring boot] 스프링 부트 2.1 변경 내역Spring/spring boot 및 기타 2021. 8. 31. 23:39
1. 자바 11 지원 2. 스프링 데이터 JPA, lazy 모드 지원 3. 의존성이 많이 변경됨. 스프링 프레임워크 5.0 -> 스프링 프레임워크 버전 5.1 로거 설정 개선 spring-jcl 컴포넌트 스캐닝 성능 개선이 가능한 “컴포넌트 인덱스" 기능 제공 -> https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-scanning-index 함수형 프로그래밍 지원 - > https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-fn 코틀린 지원 리액티브 프로그래밍 모델 지원 -> https://d..