본문 바로가기

학습 일지129

클린 아키텍처 1부. 소개 1장. 설계와 아키텍처란?설계와 아키텍처아키텍처는 저수준의 세부사항과는 분리된 고수준의 무언가를 말한다.(ex. 집의 구조)설계는 저수준의 구조 또는 결정사항 등을 의미한다.(ex. 집 내부의 전등, 콘센트, 가구, 공간이나 방의 배치)아키텍처와 설계는 모두 소프트웨어 전체 설계의 구성요소다.이 둘은 단절 없이 이어지며, 이를 통해 대상 시스템의 구조를 정의한다.개별로 존재할 수 없고 두 실제로 구분 짓는 경계는 뚜렷하지 않다.고수준에서 저수준으로 향하는 의사결정의 연속성만이 있을 뿐임 좋은 소프트웨어 설계의 목표는?소프트웨어 아키턱처의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화 하는 것설계 품질을 재는 척도는 고객의 요구를 만족시키는 데 드는 비용을 재는 척도와 다름없다.이 .. 2024. 7. 19.
스프링+코틀린에서 @Valid이 동작하지 않는 경우 문제 상황스프링으로 구현한 API 서버를 코틀린으로 마이그레이션하는 작업을 진행 중 Controller에 적용된 @Valid 어노테이션이 동작하지 않는 상황이 생겼습니다. 아래는 @Valid 어노테이션을 통해 유효성 검증이 정상 동작하는 자바 소스코드 입니다. 자바 코드@RestController@RequiredArgsConstructorpublic class MemberController extends BaseResource { private final MemberSignupService memberSignupService; @PostMapping(value = "/members", headers = X_API_VERSION) public ResponseEntity> signu.. 2024. 7. 9.
코틀린에서 자바 코드 사용 시 nullable과 non-nullable를 주의하자 개요요즘 자바와 같은 JVM 언어인 코틀린을 공부하고 있습니다.자바와 코틀린은 비슷한 점도 많지만 수많은 차이점도 존재하는데, 차이점 중 가장 흥미가 생긴 부분은 코틀린에서의 nullable과 non-nullable 타입이었습니다. 자바에서는 참조타입에 null을 자유롭게 담을 수 있지만, 코틀린은 null을 담을 수 있는 nullable 타입과 null을 담을 수 없는 non-nullable 타입을 완전히 다르게 취급합니다. 코틀린은 자바와 100% 호환 가능한 언어이기에 자바에서 코틀린으로 작성된 코드를 사용하거나, 코틀린에서 자바 코드를 사용할 수 있는데요.nullable 타입과 non-nullable 타입을 다르게 간주하는 코틀린의 특성으로 코틀린에서 자바 코드를 사용할 때 주의할 점이 있어 이를.. 2024. 7. 2.
@TransactionalEventListener 비동기 이벤트 처리 하기 회원가입 기능을 구현 중 회원가입 완료 메일 전송 기능을 스프링의 @TransactionalEventListener어노테이션을 사용해서 비동기로 처리했었습니다. 문제 상황아래는 회원가입 후 메일을 전송하는 기능의 코드입니다.@Service@RequiredArgsConstructor@Transactional(readOnly = true)public class MemberSignupService { private final MemberProcessor memberProcessor; private final MailService mailService; @Transactional public MemberSignupDto.Info signup(final MemberSignupDto.Comma.. 2024. 6. 22.