실무를 하다가 한가지 작업에 여러개의 트랜잭션이 필요한 상황이 있다.예를 들어보겠다. 현재 배치 파일을 만드는 상황이다. 배치 파일을 만들기 위해서는 파일 내부도 만들어야하고, 파일 서버에 업로드도 해야하고, 배치 파일이 insert 되었다는 기록도 해야한다.큰 틀에서 보면 3가지 작업이 있다. 한번의 작업을 하는데 적어도 3개의 메소드가 필요하다. 그렇다면 @Transactional 어노테이션은 어디에 걸어두는게 적절할까? 라는 고민을 하였다. 아래 코드는 최상위의 코드이다. @Slf4j@Servicepublic class DailyTransactionService { private final TransactionBatchService transactionBatchService; public..
Spring 프레임워크를 사용하면 대부분의 클래스들에 어노테이션을 선언하고는 한다 대표적으로 많이 사용하는 어노테이션이 Lombok, Spring Context 에 Bean 으로 등록하기 위한 어노테이션이 있다 @Getter, @Setter, @Service, @Component, @RestController 등... 개발을 하며 여러가지 어노테이션을 사용하고 있을 것이라고 생각한다 그리고 위 어노테이션을 선언함으로써 어떠한 동작을 할수있게 된다. 나는 문득 궁금해졌다.내가 이 어노테이션이 어떻게 동작하는지 알고 쓰는걸까?어노테이션을 내가 만들어서 사용할 수 있을까?라는 생각을 하였다. 위 생각을 행동으로 옮기기 위해 생각이 났을 때 공부를 해보고 기록을 해보았다 1) 어노테이션 동작 원리 및 예시어..
필자는 실무에서 SpringBoot, Java, JPA 를 사용하여 개발하고 있다. 그리고 현재 멀티 모듈 기반의 스프링부트 프로젝트를 하고 있다.그리고 일반적인 Spring Layered Architecture 를 사용하고 있다. 하나 특이점이 있다면, 일반적인 멀티 모듈 구조랑은 살짝 느낌이 다르다.책임을 분리한 모듈들도 존재하지만, 예를 들면 아래와 같다.module-commonmodule-databasemodule-core 위 공통으로 사용하는 모듈들도 존재하고 아래 처럼 역할에 맞는 멀티 모듈이 존재한다.module-apimodule-paymentmodule-adminmodule-merchant 위처럼 역할에 맞는 모듈들이 존재한다. 그리고 각 모듈은 일반적으로 레이어드 아키텍쳐로 구성이 되..
오늘은 Java/Spring 환경에서 사용하는 실무에서 SFTP/SSH 프로토콜을 사용하기 위해서 용하는 라이브러리 인 'Jsch' 사용법을 알아보려고 한다 위 포스팅을 목적은 내가 나중에 까먹었을 떄 위 포스팅을 보고 필요한 부분을 바로바로 복붙해 가기 위함이다.그러므로 내가 자주 썻던 메소드 및 사용예시에 대해서 만 설명해볼 예정이다.. 1. JSCH 란?http://www.jcraft.com/jsch/ 위 사이트는 공식문서 이다. 공식문서만 딱 들어가봐도 꽤나 오래되 보이는 사이트가 있고 그만큼 오래된 전통 라이브러리로 판정이 된다 2018년 6월이 마지막 업데이트로 생각보다 오래된(?) 라이브러리 이다 기술이 노후되고 관리되지 않았다고 안좋고 나쁜기술은 아니라고 생각한다 무료로 쓰는 입장에서, ..
일기 형식으로 실무에서 협업을 하며 아쉬웠던 부분에 대해서 한 풀이 느낌으로평소에 생각했던 내용을 정리해서 적어보려고 합니다. 글에 두서가 없을 수 있습니다. 미리 죄송합니다 저는 1년차 주니어가 되었고 더 나은 개발자가 되기 위해 끊임 없이 레퍼런스를 찾아보고 공부합니다.특히 저는 Java&Spring 개발자로써 객체지향을 공부하고 클린코드를 짜기 위해 고민합니다. 좋은 코드와 좋은 설계는 무엇일까? 라는 고민을 위주로 하며 그 고민을 코드에 녹여내기 위해 끊임 없이 고민합니다. 그래서 요즘은 '[객체지향의 사실과 오해, 오브젝트, 클린 코드]' 위 책을 읽고 있습니다.위 책들을 읽으면서 이해가 되는 부분과 이해가 안돼는 부분이 있었고 실무 코드와 책을 내용을 비교했습니다. 위 책들을 저자는 뛰어나고..
평소에 Switch ~ case 구조를 잘 안사용할 것이라는 착각을 했지만 가끔 사용을 하기도 했고 JDK14 이후 변환이 있다길래 공부한 내용을 포스팅 해보려고 합니다 Java 버전이 업그레이드 됨에 따라 생기는 새로운 기능들을 사용하려고 할 때 실무 관점에서 계속 고민하게 되는 포인트가 있습니다. Java 버전이 빠르게 발전하면서 추가되고 바뀌는 문법을 적용하는게 무조건 가독성 향상 및 유지보수에 편할까? 라는 고민도을 계속합니다.요즘 클린 코드 를 공부하다보니 '실무' 와 '클린 코드' 사이에서의 뭔가 고민이 되는 포인트가 많이 있었습니다.일단 지금 회사에서는 내가 뭔가 새로운 것을 쓰면 다 설명을 해줘야 한다. 사람들한테...왜 먼저 찾아보지 않고 질문을 할까라는 생각도 하지만 일단 그런 이야기는..
들어가며개인적인 생각으로 디자인 패턴은 뭔가 코드를 공통화하고 추상화가 필요할 때 필요한 것 같다는 생각이 든다.현재 내가 겪고 실천해본 입장에서는 일단 공통 코드를 추상화하기 위해서 위 패턴을 적용해 보았다. 실무에서 비즈니스 로직을 만들다보면 'OOP' 랑은 뭔가 거리가 먼? 코드를 작성하고 있다는 생각이 든다.과연 OOP 는 무엇일까? 개념적인 부분은 알고있다.하지만 비즈니스에 내가 어떻게 적용을 하고 있고 어떻게 더 개선할 수 있을지에 대한 고민을 하고는 한다. 그리고 그 OOP 의 첫 걸음은 디자인 패턴을 조금씩 알면서 눈에 객체지향이 조금씩 눈에 들어오고 보이기 시작했다. 내가 겪은 상황은 이렇다.거래 데이터를 집계 해야하는 상황이다. 그리고 비즈니스 로직을 짜기전에 나는 항상 텍스트 및 ..
1) 0년차 개발자의 2023 회고 1년이 순식간에 지나가버렸다.0년차 에서 1년차로 숫자가 +1 이 되어버렸다. 사실 내가 느끼기에 0년차랑 1년차의 느낌은 크지 않지만 발전을 기준으로 봤을 때는 너무나도 많이 성장한 것 같아 너무너무 뿌듯한 1년이였다. 너무 좋은 사수를 만난 것 또한 복이고 내 일들을 본인의 일처럼 아주 친절하고 잘 알려주신 분들 덕분에더 자신감있게 개발을 진행하며 질문에 대한 무서움도 많이 사라졌다. 그리고 많은 질문을 하며 질문을 잘하는 방법 또한 깨닫게 되었다. 이건 진짜 정말 좋은 것 같다. 연말에 대내외 적으로 여러 이슈들이 있였으며, 혼란스러운 우리나라랑 비례하듯이 회사 또한 혼란스러운 일들이 있었지만 크게 동요 되지 않기위해 노력을 했다. 2024년을 돌아보며개발을..