본문 바로가기
관리자

분류 전체보기

(960)
gradle -Build Tools 설정, 서브 모듈, task에 대한 기본적 이해 자바 - 스프링부트 프로젝트에서 gradle을 이용하여 종속성 관리를 많이한다. 환경 설정 셋업이라 주니어 개발자로써 잘 모르는 내용이 많았는데, 대략적으로라도 이해한 내용을 정리해놓는다.  아래 gradle 공식 사이트에서 docs - running gradle builds - Tutorial 부분을 20~30분만 읽어봐도 대략적으로 이해할 수 있다.ref) https://docs.gradle.org/current/userguide/part1_gradle_init.html 1. build 자바- 스프링 계열에서 프로젝트 build를 하는 것은 실행가능한 .jar 파일을 만드는 과정이다. 직접 작성하는 .java 파일들을 JVM이 해석할 수 있는 .class 파일로 변환하고 메인 함수의 위치는 어디인지(..
[검증 중] 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..
[비공개] Weekly Report - 24/05/20~24/05/26, 1429일차 보호되어 있는 글입니다.
자바 기초 강의 정리 - 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..