일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- Redis Sentinel
- docker-compose
- spring boot redis
- RabbitMQ
- docker
- docker compose mysql
- KAFKA
- coalesce
- MySQL
- weblogic 10
- spring cloud
- Airflow
- vue.js
- netflix oss
- cassandra
- QueryDSL
- jmeter
- mybatis
- Hibernate
- Spring Open Feign
- Selenium
- ChannelPipeline
- Docker Compose
- redis
- WebLogic
- Netty
- spring boot
- argo cd
- grafana
- Today
- Total
목록Spring (98)
IT.FARMER
SpringBoot daemon application 만들기 Spring 을 사용하면서 데몬형태로 운영하기 위해서는 web module을 제거해주고 Start 해준다. 혹은 제거 하지 않고도 프로퍼티에서 설정을 변경 하여 데몬 형태로 만들 수 있다. web-application-type 타입을 none로 변경하여 데몬 형태로 만든다. (내장 웹서버를 사용하지 않음) spring: devtools: restart: enabled: false main: **web-application-type: none** 어째뜬 web-application-type 을 변경 하거나, web 모듈을 제거 하고, 계속 데몬이 유지되게 하려면 Thread 를 하나 생성해서 프로세스를 살려둔다. (혹은 rabbitMQ, kafk..
Spring Muiltiple DataSource 처음에 멀티데이터 소스를 사용할땐 DB 한곳을 바라보고 여러가지 프레임웍 즉 JPA , Mybatis 를 이요하기 위해 사용 했는데. 생각해보면 하나더 있었다. DB 여러(n)대를 하나의 Module 에서 바라보게 되는 것이다. 기본적으로 Spring 은 perperties 에 하나의 data source 를 연결하기 위해 지원하기 때문에 여러개의 datasource를 사용하기 위해서는 사용자가 직접 정의하는 방법을 택해야 한다. 멀티 데이터소스를 설정하다보면 다음과 같은 오류에 만날때가 많다. 기본적으로 어떤 오류인지 알고가자 Caused by: java.lang.IllegalArgumentException: Not a managed type: clas..
Spring R2DBC CRUD 예제 WebFlux 를 사용한다면, 반쪽짜리 NonBlocking 서버가 되지 않기 위해선 persisent layer 의 영역도 reactive 하게 변경해주어야 한다. 다행이 spring-r2dbc-data 와 mysql 드라이버를 지원함으로 spring r2dbc 기반 Repository를 구현 및 테스트 할수 있다. pom.xml 에 다음 라이브러리를 넣어 준다. spring-boot-starter-data-r2dbc org.springframework.boot dev.miku r2dbc-mysql runtime 데이상 dev.miku 는 동작하지 않는다, 메인터런스를 포기하고 com.github.jasync-sql로 옮겼다. mysql 의 r2dbc library..
mybatis Cause: java.lang.IllegalArgumentException: argument type mismatch” Mybatis 에서 데이터 조회시 다음과 같은 오류가 날때는 Mybatis 특성에 대해 알고 있어야 대응이 가능 하다. Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.cjenm.report.library.domain.entity.JobEntity with invalid types (Job) or values (16). Cause: java.lang..
mybatis association, inner class , embeded innerclass를 이요해서 mybatis 의 Obejct 맵팽을 위해서는 다음과 같이 사용 할 수 있다. 특히 JPA 사용사 멀티 PK를 사용한 Entity 를 사용시 @embeded 를 이요한 내부 Class 를 이용할때 혹은 객체를 이용할때 association tag는 유용하다. innnerClass 선택은 xml 에서 $을 . 대신에 사용해 준다. Entity Class 생성 AdsEntityPK 를 내부 Class로 가지고 있다. @Entity @Table(name = "ads") @Getter@Setter @EqualsAndHashCode(callSuper = true, exclude = {"adGroupEntit..
mybatis 문법 foreach 리스트객체로 보낼경우 parameterType="java.util.List" , collection = "list"로 받아서 처리 한다. item 은 el tag 안에서 사용할 변수명 this.jobMapper.findAllByJobId(List.of(masterJobId) SELECT `job_execution_id`, `master_job_id` as `job_id`, `job_name`, `total_size`, `processed_count`, `start_time`, `end_time`, `status`, `exit_status`, `message`, `request_details`, `requester`, `last_update` FROM `ae_report`..
JPA Inner Join , left join JPA로 저장이 잘되던 내역이 갑자기 저장이 되지 않고 중복에러를 뱉어 냈다. 어째든 내가 어딘가를 수정 했겠지.. save 시에 저장되는 쿼리를 살펴 보니 inner join 형태로 조인되어 지고 있었다. 1:1 관계로 맺어둔 엔티티들이 문제였다. (이래서 왠만하면 1:N 으로 묶는구나 싶었다.) 1:1 상황에서 연관된 객체를 영속성있게 해주지 않으면 부모 객체의 PK 값만 넣어줬을때 조회후 중복으로 체크되어 if (entityInformation.isNew(entity)) 에서 true로 merge 되도록 하지만 중복 오류가 발생된다. merge문을 타도록 되어 있지만 sql 로그에 찍히는 걸보면 insert 문이 찍힌다. - 연관된 1:1 객체는 모두..
JPA paging 속성 값 int getNumber(); //현재 페이지 int getSize(); //페이지 크기 int getTotalPages(); //전체 페이지 수 int getNumberOfElements(); //현재 페이지에 나올 데이터 수 long getTotalElements(); //전체 데이터 수 boolean hasPreviousPage(); //이전 페이지 여부 boolean isFirstPage(); //현재 페이지가 첫 페이지 인지 여부 boolean hasNextPage(); //다음 페이지 여부 boolean isLastPage(); //현재 페이지가 마지막 페이지 인지 여부 Pageable nextPageable(); //다음 페이지 객체, 다음 페이지가 없으면 nul..
spring webflux error 처리 Mono / Flux .doOnError() : 예외가 발생했을 경우 특정 행위를 실행 시킬대 사용 .onErrorReturn () : 예외가 발생 했을때 특정 값을 리턴 함 .onErrorResume() : 예외가 발생 했을때 오류에 따라 대체를 선택하는 기능을 사용함. 오류가 발생하면 반환된 대체 게시자를 구독 하여 사용 .onErrorContinue() : 예외가 발생 했을대 멈추지 않고 해당 영역만 skip 하고 동작함. @Slf4j public class WebFluxError { @Test public void onErrorResume() { Flux.range(0, 5) .map(integer -> { if (integer == 3) { throw ..