Spring/spring boot 및 기타
-
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 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..
-
[spring] Mybatis batch upsert 하는 방법(mysql)Spring/spring boot 및 기타 2021. 8. 11. 18:13
spring 에서 mybatis 로 bulk upsert 를 해줘야 할때 아래와 같이 작업을 했다. jpa 를 사용하면 saveall 메소드로 bulk upsert 가 가능했는데, mybatis 에서는 메소드를 직접 만들다 보니 그런게 없어서, 직접 만들어줘야 한다. 일반적으로는 pk 로 데이터 조회 후 없으면 insert 있으면 Update 를 해줘야 하나 매번 select 를 하기 db 커넥션도 아깝고 코드가 번거롭다. 하지만 mysql 에는 ON DUPLICATE KEY UPDATE 기능 이 있어 이미 데이터가 있다면 update 를 할 수 있다. 해당 방식은 INSERT를 하다가 PK값이 존재하면 UPDATE를 한다는 조건이 있는데 이 조건을 만족하기 위해 테이블에 무조건 PK값이 지정이 되어있어..
-
[Spring] multi datasource 동적으로 사용 - AbstractRoutingDataSourceSpring/spring boot 및 기타 2021. 8. 3. 01:19
사용이유 datasource 커넥션을 로직이나 상황별로 나눠야 하는 상황이 올 수 도 있고, 어플리케이션단에서 샤딩을 구현해야 할 수 도 있고, read 커넥션 및 write 커넥션의 datasource 를 나눠야 하는 경우가 있다. 애초에 다른 datasoure 파일을 만들어도 되지만, 동적으로 쿼리 요청시마다 datasource 를 변경해야 할 때 AbstractRoutingDataSource 를 사용하면 된다. AbstractRoutingDataSource란? spring-jdbc 모듈에 포함되어 있는 클래스로, 여러 DataSource를 등록하고 특정 상황에 맞게 원하는 DataSource를 사용할 수 있도록 추상화한 클래스이다. 구현방식 AbstractRoutingDataSource는 이름 기반..
-
[spring boot] mybatis 연동 및 설정Spring/spring boot 및 기타 2021. 6. 23. 17:52
spring boot 에서 mybatis 를 연동하는 법을 해보자 pom.xml org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.0 일단 pom.xml 에 mybatis 라이브러리부터 추가하자. dbms 에 맞는 driver 는 추가됐다고 가정하고 진행한다. 사용버젼 표 아래 표에 맞게 version 명시하면 된다. MyBatis-Spring-Boot-Starter MyBatis-Spring Spring Boot Java 2.2 2.0 (need 2.0.6+ for enable all features) 2.5 or higher 8 or higher 2.1 2.0 (need 2.0.6+ for enable all features) 2.1 - 2.4 8 o..