Spring28 레거시 Spring Framework Project 패키지 리팩토링 오늘은 팀원들과 협의해 리팩토링을 진행했던 이야기를 정리해보려 합니다.새로운 회사, 새로운 팀원, 기존 인원들의 개발 스타일에 적응해 나가며 이것저것 건의하고 의견을들어보고 개선해 나가야할 점들을 피력하고 있습니다.입사초기 Spring Framework와 Mybatis로 구성된 백오피스 서버 추가 기능개발 및 유지보수 업무를 진행했었습니다. 업무를 진행하며 큰 허들을 느꼈던 부분이 있었는데 그부분은 바로 지금은 너무나 당연 Dto 대한 책임분리였습니다.Spring Web Server를 구현한다면 일반적으로 데이터 전달을 위해 Dto를 많이 활용하실 겁니다. 다만제가 기능 추가, 유지보수업무를 받은 프로젝트는 모든 데이터를 HashMap으로 관리하고 상태를 변경하고 영속성에 저장하는 역할까지 책임지고 있.. 2025. 2. 16. Java 부동소수점 계산시 정확한 계산을 위해 왜 BigDesimal을 사용해야하는가? 오늘은 부동소수점 계산을 정확하게 하려면 왜 BigDesimal을 사용해야 하는지에 대해 한번 생각해 보겠습니다.부동소수점 정확도를 고민하게된건 회사에서 결제 서비스를 도입할 때였습니다.고객이 사용한 금액에 대해 수수료율을 계산하여 결제할 금액을 결정할 때 고객이 사용한 금액이 10원 단위로 딱 떨어지지도 않고 수수료율도 22%였기 때문에 double 자료형으로 수수료율을 계산하게 된다면 나머지가 남게 되어 순환소수가 발생해 버려 근삿값 2진수로 처리되어 오차가 발생할 여지 때문이었습니다.물론 큰 오차는 아니지만 회계, 세법 처리에 있어서 결제금액이 커질수록 작아 보이는 오차도 큰 금액이 되기 때문에 정확한 계산이 필요했었습니다.그래서 정확한 소수점계산을 위해 Java5에서 IBM의 기부로 완성된 Bi.. 2025. 2. 10. SpringFramework NullPointException 방지법 NullPointException자바 개발자라면 많이 마주치는 오류라고 단언컨데 이야기할 수 있을것 같습니다. 처음 자바 개발을 배우며 매번 만나던 오류였고 개발자로 취업후 2개월정도는 많이 고생했던 기억이 납니다. 이제는 NullPointException 에러방지는 몸에 습관이 되어서 잘 만나보지 못하지만 혹여나 NPE로 고생하시는 개발자분들 위해 간단하게 제가 Java Spring Framework에서 NPE를 방지하는 방법을 공유하도록 하겠습니다. // Db 엔티티 단건조회시 Optional 타입으로 조회Optional optionalBoard = boardRepository.findById(boardId);// 데이터가 존재하지 않을경우 체크if (optionalBoard.isEmpty()) { .. 2025. 1. 13. Private Docker Registre 구축 클라우드 서비스를 사용하지 않고 폐쇄 환경에서 CI/CD를 구축 하고 있습니다. Gitlap, Jenkins 파이프라인을 통해 CI 지속적인 통합 환경을 구축하였고 Docker Registry, Jenkins 파이프라인을 통해 CD환경을 구축하였습니다.그 중 오늘 소개할 방법은 Docker에서 공식적으로 제공하는 registry 이미지를 통해 프라이빗한 Docker image 저장소를 구축하는 방법입니다. 말이 뭔가 도돌이표인것같은 느낌이지만 Docker 환경에 Docker Image를 저장할 수 있는 Docker Registry 컨테이너를 띄워서 폐쇄환경에서 도커 이미지저장소를 구현해보겠습니다. Authentication// 아래 환경은 리눅스 Shell환경에서 진행이 됩니다.// 일단 간단하게 보안설.. 2025. 1. 8. Spring Boot Batch 프로젝트에서 Webclient 사용시 주의점 오늘은 Spring Boot Batch 프로젝트에 Webclient 의존성을 추가하면서 발생한 이슈를 기록하고자 합니다. 이벤트 관련 Spring Boot Batch 비즈니스 로직을 작성하며 기술적 부채였던 RestTemplate을 더이상 사용하지 않고 점진적으로 Webclient로 교체해나가기 의존성을 추가하기로 결정하였습니다. implementation 'org.springframework.boot:spring-boot-starter-webflux' Webclient를 사용하기 위해서는 Webflux의존성을 추가하였는데 웬걸? Spring Boot Batch는 일괄작업만 하고 종료되기에 특별히 Web 요청을 받을 필요가 Spring Boot 기본적으로 추가되어 있는 임베디드 톰캣의존성을 제거하였는.. 2024. 12. 5. Spring Framework ResponseEntity 사용에 대한 고찰 현업에서 Spring Framework로 Rest Api서버를 구현하다보면 ReponseEntity를 자주 보게됩니다. Spring Framework Rest Api를 처음 공부할때는 ResponseEntity를 사용하지않고 대부분 Java 객체를 직접 응답하였는데 현업에서 기존에 있던 코드들을 확인해보니 ResponseEntity를 사용하여 Java 객체를 응답하는 형식으로 대부분 구성되어 있었습니다. 일반적으로 Java 객체를 응답해도 HTTP 프로토콜형식에 맞게 응답이 잘 되었는데 ResponseEntity를 사용하면 혹시나 내가 모르는 다른 차이점이 있나해서 눈으로 직접 확인해보기로 했습니다. @PostMapping public ResponseEntity requestOrder(@RequestBo.. 2024. 11. 17. 이전 1 2 3 4 5 다음