Programming-[Backend] (393) 썸네일형 리스트형 [검증 중] Kafka - testcontainer : Transaction 묶기, graceful shutdown, 수동 커밋, await 아직 대략적으로만 경험했고, 확실하지는 않은 내용이라 다른 참조 문서들을 참고해야하는 내용이다. 1. Transaction 묶기 ref) https://gunju-ko.github.io/kafka/spring-kafka/2018/03/31/Spring-KafkaTransaction.htmlkafka는 기본적으로 비동기적인 메시지 발행을 하므로 트랜잭션을 끝까지 보장하지 않는다. 반드시 트랜잭션이 보장되도록 할려면 executeInTransaction 메서드를 사용해야한다. 이 방식은 KafkaTransactionManager를 거치는 방식은 아니고, KafkaTemplate만 이용해서 바로 트랜잭션을 묶어준다.kafkaTemplate.executeInTransaction( t -> t.send(y.. testcontainer 자바 도커 컨테이너 테스트: @ExtendWith, @DirtiesContext 1. testcontainer 개요 testcontainer는 테스트 시에만 사용할 수 있는 컨테이너를 실행시켜준다. 애플리케이션 실행에는 필요없지만 테스트만을 위해 컨테이너가 필요한 경우 해당 이미지를 구동시켜주는 것이다. 만약 테스트를 위해 MySQL DB가 필요하다면 testcontainer가 없는 경우 SpringBoot가 제공하는 In-memory DB를 이용하거나 따로 DB용 컨테이너를 실행해야할텐데, testcontainer는 그러한 과정 대신 테스트가 실행될 때만 MySQL용 컨테이너를 띄워주고 테스트가 끝나면 해당 컨테이너를 종료시킨다. build.gradle에 아래처럼 추가해준다.dependencies { ... testImplementation "org.testcontainers.. 자바 기초 강의 정리 - 1. 기초 ~ 함수, 제너릭까지 인프런 얄코의 제대로 파는 자바 강의를 듣고 정리한 내용이다. 중요하거나 실무를 하면서 놓치고 있었던 부분들 위주로만 요약 정리한다.자세한 내용은 강의를 직접 수강하는 것이 좋다.https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EC%9E%90%EB%B0%94/dashboard 1. 자료형자바에는 1 바이트 단위의 byte, 2바이트의 short도 있지만, int를 많이 사용한다. 타 언어들 및 라이브러리와 호환성을 위해서 이기도 하고, 대부분의 CPU에서 int의 4바이트(32비트)가 처리하기 적합한 크기이기 때문이기도 하다.float 대비 double은 표현 범위도 넓지만 표현의 정밀도도 더 크다.char는.. 자바 linter, 포매팅 처리 : spotless, googlejavaformat, commit시 자동 적용 자바 코드의 문법 규칙을 만들고 자동으로 처리해주는 linter에 대해서 정리한다. googlejavaformat구글에서 제공하는 format이다. 실제 구글에서 사용한다고 한다. intellij에서 설정하여 로컬로 사용할 수 있는데, 자세한 설정 방법은 아래 블로그를 참고하면 된다.https://velog.io/@ppinkypeach/IntelliJ%EC%97%90-Google-Java-Style-format-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0 *요약https://github.com/google/styleguide -> intellij-java-google-style.xml 파일을 다운환경 설정 -> Editor -> Code StyleScheme -> Import Sc.. Mapstruct 기능 기록 uses, expression, @Named, qualifiedByName Mapstruct로 Mapping 할 때, 유용했던 기능에 대해서 정리한다. uses특정 객체 내부에 다른 객체가 list로 포함된 경우 uses를 사용해서 list 객체의 매핑을 자동으로 할 수 있다. //Mapper 내부에 uses로 사용@Mapper(componentModel = "spring", uses = {TaxPoToTaxDtoMapper.class})public interface GoodsPoToGoodsDtoMapper extends BasePoDtoMapper { GoodsDto copy(GoodsPo source);}// GoodsPo: List가 포함되어 있다public class GoodsPo extends BasePoAbstract { private String id;.. [경험 요약] 자바 테스트 객체 자동으로 만들기: Instancio 라이브러리 오랜만에 자바-스프링 프로젝트를 진행하면서 테스트 케이스상 필요한 given 객체들을 만들어내야하는데, 각 속성값들을 직접 다 지정해줘야하는게 너무 불편했다. 파이썬-장고 계열에서는 Model Bakery를 사용했었는데, 자바에서는 그런 라이브러리를 사용한 기억이 없어서 라이브러리를 찾아보기로 했다! Instanciohttps://mvnrepository.com/artifact/org.instancio/instancio-junit instancio를 maven repository에서 import 해와서 build.gradle에 포함시켰다. 간단한 사용법은 예시는 아래와 같다. user-guide를 5~10분만 보면 바로 어떤 건지 알 수 있다.https://www.instancio.org/user-gu.. [경험 요약] Atomikos multi-database transaction 묶기 https://wildeveloperetrain.tistory.com/332 Atomikos를 통한 Multi Datasource Transaction 처리 (전역 트랜잭션)스프링 부트 다중 데이터베이스 트랜잭션 처리 (jta-atomikos) 해당 포스팅은 스프링부트 환경에서 다중 데이터베이스를 연결할 때 'multi datasource에 대한 트랜잭션 처리'에 대해 정리한 내용입니다.wildeveloperetrain.tistory.com 위 링크가 정리가 잘 된 것 같다. 실무를 해보면서 유의해야할 점들을 저장해놓는다. 1. application.yml에서 hibernate 설정이 잘 안될 수 있다.- 따로 Datasource config를 위한 Bean들을 만들어서 Config에서 설정 내용을 주입.. 생활코딩 codeigniter - 5. 이메일 전송, CLI, queue&cron, caching 1. 이메일 전송 이메일 라이브러리 사용 새로운 글이 등록되었을 때 이메일을 전송해준다는 기능을 가정하여 처리해본다. 기본적으로 제공하는 라이브러리를 사용하는 것이여서, 라이브러리를 사용하고 확장해보는 예제라고 생각하고 처리해보면 된다. $this->load->model('user_model'); $users = $this->user_model->gets(); // user 모델에 정의한 모든 user 정보들을 가져오는 메서드 $this->load->library('email'); foreach($users as $user){ $this->email->from('admin@gmail.com', 'name'); $this->email->to($user->email); //모든 유저에게 전송 $this->e.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 50 다음