일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영속성
- 최범균
- 객체지향 쿼리 언어
- 큐시즘
- reactive operaton
- Spring
- springboot
- 자바 ORM 표준 JPA 프로그래밍
- RESTClient
- JPA
- java
- Domain Driven Design
- kusitms
- ddd
- 교육기획팀
- GitHub Actions
- scheduling messages with rabbitmq
- Spring Batch
- 자동처리
- cicd
- 30기
- 한국대학생it경영학회
- rabbitmq-delayed-message-exchange
- jdbc
- 도메인 주도 개발 시작하기
- 밋업프로젝트
- 이펙티브자바
- 교육기획팀원
- JPQL
- delayed message plugin
- Today
- Total
목록전체 글 (69)
코딩은 마라톤
아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라정적 팩터리 메서드 : 그 클래스의 인스턴스를 반환하는 정적 메서드 장점(5)1. 반환될 객체의 특성을 쉽게 묘사할 수 있는 "이름" 을 지을 수 있다.// 생성자new Bake(String, String, String)// 정적 팩터리 메서드Bake.bakeCookie(String, String, String) 2. 호출될 때마다 새로 인스턴스를 생성하지 않아도 된다.public static Boolean valueOf(boolean value) { return value ? true : false;}// valueOf 메서드는 true, false를 미리 만들어놓고 반환하기 때문에 // 자주 요청해도 요청 횟수만큼 생성되는 것이 아니라 성능 향상의..
회사 면접 봤을 때가 4월 5일이었는데..(제 생일인건 비밀)벌써 3주차네요..회사 입사하면서 긴장도 엄청 하고 실수도 많이 하지만...실수 안하고 완벽해야지! 라는 생각에서더 실수하고 부족한 부분을 계속 발견해서 더 채워 나가야지! 라는 생각으로 바뀌고 있습니다. 제일 처음 받은 업무에서 완벽해야한다는 생각이 바뀌게 된 순간이었습니다.저는 application.yml 프로파일이 로컬(local), 개발용(dev), 실서버용(stg, prod) 3~4가지로 나뉘는데 이걸 environment.getActiveProfiles() 를 통해서 각 환경별 Prefix를 만드는 것이었습니다. "엥? 그냥 각 환경 별로 맞으면 각 Prefix를 더해주면 되겠네" 했는데 이를 Util 성 클래스로 요청 받았고Util..

근황...요즘 블로그 쓰는게 뜸하죠... 제가 이번주부터 회사 인턴으로 백엔드 개발자로 근무하게 되었습니다 !!!!!많이 부족한 실력이지만 개인 공부도 열심히 하고 회사 일도 꼼꼼하게 해서 3개월 뒤에 좋은 개발자가 되었음 좋겠습니다~! P.S 회사에서 사용하는 제 영어 이름은 Koi (코이) 입니다. 책에서 읽고 저의 모토랄까나.. 가치관과 가장 잘 맞는다고 생각해서 지었습니당https://www.onday.or.kr/wp/?p=13410 (고른 이유가 궁금하시다면 이 글을 읽어보세요!) 회사에는 좋은 개발자들과 제가 성장할 수 있는 환경을 충분히 제공해주신 만큼 열심히 노력해서 코이처럼 대인이 되었음 좋겠습니다.또한 성장에 그치지 않고 주변의 개발을 꿈꾸는 분들에게 좋은 환경을 제공해서 또 다른 코..

학습하게 된 계기지금 하고 있는 프로젝트가 기능 구현은 다 끝났지만, 인증과 관련해서 액세스 토큰만 사용하기 때문에 짧은 유효시간으로 잦은 로그인이 발생했다. 그래서 리프레시 토큰을 추가해서 안정성을 높이고자 했는데,, 모든 에러를 처리해줬음에도,, 500 에러만 계속 떠서 무슨 이유에서 에러가 발생하는지 알 수 없었다.. 그 이유를 최근에서야 알게 됐는데 바로 Filter 때문이었다. 필터에서 내가 커스텀한 ServiceException이 발생 시 에러 메시지를 보내고, 그 외에 모든 에러는 500 서버 에러를 보낸다. 하지만 ServiceException은 거진 Service 레이어에서 발생하기 때문에 필터에서 디스패처 서블릿으로 넘어간 후 에러가 발생하여 필터에서 catch하지 못하는 상황이었다..

Chunk 기반의 Step에서 ItemReader, ItemProcessor, ItemWriter가 존재한다.이번 글을 통해 CSV, JDBC, JPA의 데이터를 읽어오는 ItemReader를 소개하고자 한다. CSV File ItemReaderA flat file is any type of file that contains at most two-dimensional (tabular) data. Reading flat files in the Spring Batch framework is facilitated by the class called FlatFileItemReader, which provides basic functionality for reading and parsing flat files. ..

스프링 배치 기본 구조 Job Launcher 가 Job을 실행하고 Job이 Step을 실행한다. Job Repository : db 또는 메모리에 스프링 배치가 실행할 수 있도록 메타 데이터를 관리하는 클래스 Job : 배치의 실행 단위 N개의 Step을 실행할 수 있고, 흐름(Flow)을 관리할 수 있다. Step : Job의 세부 실행 단위, N개가 등록돼 실행된다. Step의 실행 단위는 크게 2가지다. Chunk 기반 : 하나의 큰 덩어리를 n개씩 나눠서 실행 Task 기반 : 하나의 작업 기반으로 실행 Chunk 기반 Step은 ItemReader, ItemProcessor, ItemWriter가 있다. ItemReader : 배치 처리 대상 객체(Item) 를 읽어 ItemProcessor,..

현재 Github Actions와 Docker를 이용해 CICD를 구축했다. 대략 1분 30초 정도 소요되는데 이 시간을 줄일 수 있는 방법이 있을지 찾아보다가 도커 캐시를 이용하면 시간을 단축할 수 있다고 알게 되었다. Docker Layer, Cache 도커 캐시를 관리하기 위해선 도커 레이어를 먼저 알아볼 필요가 있다. 도커 이미지는 Dockerfile의 명령어들이 차례로 실행되면서 레이어를 생성한다. ubuntu는 A, B, C로 구성되어있고 그 ubuntu를 베이스로 가진 nginx 이미지는 nginx만 추가된다. 만약 레이어를 사용하지 않으면 Dockerfile 명령어가 실행되면서 동일한 작업이 반복되어 파일 용량이 커지고 이미지 생성 시간이 길어지게 되는 단점이 있다. 따라서 레이어 방식을 ..
이번 글의 주제는 불변객체(Immutable Object)이다. 이 주제 역시 면접에서 질문을 받았었다. 면접관님 : 불변객체가 뭐예요? 나 : 내부 데이터를 변경할 수 없는 객체를 의미합니다.. 면접관님 : 불변객체를 쓰는 이유가 뭐예요? 나 : 객체지향의 특징 중 캡슐화때문이라고 할 수 있습니다. 캡슐화를 통해 객체는 외부에서 접근되지 않고 ~~~~~ 위와 같이 답변을 했지만,, 사실 불변객체가 말 그대로 "내부 데이터를 변경하지 못하는 객체"라고만 알고 있어서 이번 기회에 알아보고자 한다 ! 불변 클래스 불변객체를 알아보기 전에 불변 클래스부터 알아보자 ! 불변클래스란 인스턴스 내부의 값을 수정할 수 없는 클래스를 말한다. 그렇다면 불변클래스를 만드는 방법은 뭐가 있을까? 객체의 상태를 변경하는 메..