Dev 91

Junit In Action - TDD를 위한 테스트 원칙, 도구 및 활용 Review - 핵심 애노테이션 ( 1/2 )

개발환경IDE :  intelliJ FrameWork : springboot 3.xLaunguage : java 17TestTool : Junit5   예제 소스 링크   들어가기 전에  개발 방식을 TDD로 전환하면서 테스트 코드 작성 시 여러 난관에 부딪혔다. 공식 가이드를 보며 이것저것 시도해보기도하고, 구글링과 ChatGPT를 통해 예제 코드도 많이 봤고, Git에서 떠돌아다니는 오픈소스의 테스트코드들을 뜯어보며 어떻게 작성하는 게 좋을지에 대해 많은 고민을 했다.  처음에는 Mock이고 Stub이고 하는것들의 개념 없이 그냥 서비스 레이어의 메서드 단위로 테스트를 시작했다.  뭐가 뭔지도 잘 모르는 상태에서 단순히 그냥 '코드를 먼저 작성하는' 정도에 그쳤다.  특히 Controller 관련 코..

Dev/TDD 2024.06.14

JWT 부록, JWS/JWE/JWK

이전 포스팅은 여기로 2024.05.20 - [Dev/Etc] - JWT 란 무엇인가? - Session과 JWT 인증 방식의 비교 / 예제 코드 포함 ( feat. OAuth ) JWT 란 무엇인가 ? - Session과 JWT 인증 방식의 비교 / 예제 코드 포함 ( feat. OAuth )오늘 게시글은 인증 시 많이 사용하는 JWT의 기본 개념과 실제로 어떻게 구현하는지에 대한 내용을 정리해보고자 한다. 관련해서 OAuth 도 공유하면 좋을 것 같아서 함께 묶었다. 이전에 Swagger 사zigo-autumn.tistory.com   이전에 JWT를 정리하면서 궁금했던 점에 대해 따로 정리하는 게시글이다. 간단한 용어정리 정도니 자세한 JWT 내용은 위 게시글을 참고 바란다. JWT 관련 용어 JW..

Dev/Etc 2024.06.03

Record 로 DTO 생성하기

Record  란?Java14부터 도입된 클래스로 불변 데이터를 객체 간에 전달하는 작업을 간단하게 만들어주는 역할을 한다.Record를 사용하면 불필요한 코드를 제거할 수 있고, 적은 코드로도 명확한 의도를 표현할 수 있다.  Record의 특징 멤버변수는 private final로 선언한다.필드별 getter가 자동으로 생성된다.모든 멤버변수를 인자로 하는 public 생성자를 자동으로 생성한다.  (@AllAgrsConstructure과 유사하지만 생성자가 실행될 때 인스턴스 필드를 수행할 수 없다.)equals, hashcode, toString을 자동으로 생성한다.기본 생성자는 제공하지 않으므로 필요한 경우 직접 생성해야 한다.  Record로 바꿔보기 변경 전@Getter@NoArgsConst..

Dev/Java 2024.06.03

헥사고날 아키텍처(Hexagonal Architecture) 쉽게 알기

이전 MSA에 대해서 리뷰 했는데, 이번 게시글은 헥사고날 아키텍처다. 해당 아키텍처가 어떤 경우에 선택되어야 하는지 공유하면 좋을 것 같아서 글을 작성해 본다. 헥사고날에 대해 알기 전에, 전통적인 아키텍처에 대해 먼저 정리하고자 한다. 계층형 아키텍처(Layered Architecture) 가장 대중적으로 사용되는 전통적인 아키텍처로 비즈니스 로직, 데이터 액세스, 프레젠테이션 계층으로 구성된다. 일반적으로 많이 사용하는 repository(database, persistenece layer), service(domain layer), controller(presentation layer)를 생각하면 쉽다. 같은 목적의 코드들을 같은 계층으로 그룹화한 것으로, 역할과 관심사를 기준으로 계층을 분리한다..

Dev/Architecture 2024.05.29

왜 소프트웨어 프로그램 설계 시 MSA를 선택할까? - MSA : MicroService Architecture의 모든 것

오늘 포스팅할 주제는 MSA다.  요즘 IT회사에서 채용할 때 우대사항에 항상 들어가 있는 항목이기도 하다. 그렇다면 왜 MSA를 선택할까?마냥 MSA가 소프트웨어 설계관점에서 베스트일까?  MSA를 자세하기 알아보기 전에, 전통적으로 사용했던 모놀리식에 대해 알아보자. 모놀리식 아키텍처(MA:Monolithic Architecture)란?모놀리식 아키텍처는 애플리케이션 내의 모든 기능과 서비스가 함께 맞물려 단일 유닛으로 운영되는 것을 의미한다.  단일 유닛으로 운영된다는 것은 전체 애플리케이션이 단일 코드로 작성되어 단일 데이터베이스에 연결되는 것이다.이해하기 쉽게 쿠팡에서 사용했었던 모놀리식 아키텍처 구성도를 가져왔다. 초기 쿠팡의 서비스는 모놀리식 아키텍처로 구성되어 있었는데, 위 그림과 같이 하..

Dev/Architecture 2024.05.29

JWT 란 무엇인가 ? - Session과 JWT 인증 방식의 비교 / 예제 코드 포함 ( feat. OAuth )

오늘 게시글은 인증 시 많이 사용하는 JWT의 기본 개념과 실제로 어떻게 구현하는지에 대한 내용을 정리해보고자 한다. 관련해서 OAuth 도 공유하면 좋을 것 같아서 함께 묶었다. 이전에 Swagger 사용 시 JWT를 통한 인증을 구현할 때 페이지에서 JWT 값이 제대로 넘어오지 않던 오류가 났던 문제를 해결한 적이 있는데, 관련 글은 아래에 첨부했다. 내 개발 블로그에서 제일 조회수가 꾸준히 증가하는 게시글인 것 같다. 누군가에게 도움이 되었을 생각을 하니 뿌듯하다 ^0^ 2024.01.29 - [Dev/springboot] - Swagger 를 사용해서 Type 이 Bearer 인 JWT Token 인증하기 Swagger 를 사용해서 Type 이 Bearer 인 JWT Token 인증하기개발환경 I..

Dev/Etc 2024.05.20

스프링 빈 라이프 사이클 ( Spring Bean Life Cycle ) - Bean Scope, Bean Profile, Bean 초기화

해당 게시글은 사실 DI 나 IoC작성시 관련해서 함께 작성하려고 했는데 어쩌다 보니 작성 순서가 뒤로 밀렸다.  이 글을 읽고나면 아래 순서대로 한번씩 읽어보는 것을 추천한다 :) ( 사실 이번 글을 작성하다가 세션 종료로 글이 통째로 한번 날아가서 마음이 아픈 상태다 ^_ㅠ..)  2024.05.06 - [개발/springboot] - Spring의 DI - 코드를 유연하고 단순하게 하는 방법 Spring의 DI - 코드를 유연하고 단순하게 하는 방법이전 AOP에 이어 Spring POJO의 또 다른 키워드인 DI와 IoC에 대한 개념을 함께 정리해볼까 한다.AOP에 대한 게시글이 궁금하다면 아래 링크를 참조 바란다. 2024.05.06 - [개발/springboot] - Spring의 AOP - 공..

Dev/Springboot 2024.05.16

AOP 심화 - @Advice 예제 포함

이전 게시글에서 AOP에 대해 간단하게 정리했는데 실제 예제등에 대해 부족한점이 있는 것 같아 내용을 보충하고자 해당 게시글을 작성하게 되었다.  2024.05.06 - [개발/springboot] - Spring 의 AOP - 공통 소스 파일을 분리하여 관리할 수 있는 방법 Spring 의 AOP - 공통 소스 파일을 분리하여 관리할 수 있는 방법java OOP 관련 게시글을 작성하다가 Spring POJO 에서 필수적으로 알아야 하는 AOP/IoC/DI/PSA에 대해 정리한 글을 공유하면 좋을 것 같아 글을 남겨 본다.  그중에서도 이번 게시글은 AOP에 관련된 내용zigo-autumn.tistory.com  JoinPoint 와 ProceedingJoinPointJoinPoint@Advice가 적용..

Dev/Springboot 2024.05.16

Spring 의 PSA - 웹 기술 스택을 간편하게 변경할 수 있는 방법

Spring POJO 구조의 마지막 내용이다.  AOP와 DI 관련된 내용은 다음 게시글을 참고 바란다. 2024.05.06 - [개발/springboot] - Spring 의 AOP - 공통 소스 파일을 분리하여 관리할 수 있는 방법 Spring 의 AOP - 공통 소스 파일을 분리하여 관리할 수 있는 방법java OOP 관련 게시글을 작성하다가 Spring에서 필수적으로 알아야 하는 AOP/IoC/DI/PSA에 대해 정리한 글을 공유하면 좋을 것 같아 글을 남겨 본다.  그중에서도 이번 게시글은 AOP에 관련된 내용이다.zigo-autumn.tistory.com 2024.05.06 - [개발/springboot] - Spring의 DI - 코드를 유연하고 단순하게 하는 방법 Spring의 DI - 코..

Dev/Springboot 2024.05.06

Spring의 DI - 코드를 유연하고 단순하게 하는 방법

이전 AOP에 이어 Spring POJO의 또 다른 키워드인 DI와 IoC에 대한 개념을 함께 정리해볼까 한다.AOP에 대한 게시글이 궁금하다면 아래 링크를 참조 바란다. 2024.05.06 - [개발/springboot] - Spring의 AOP - 공통 소스 파일을 분리하여 관리할 수 있는 방법 Spring 의 AOP - 공통 소스 파일을 분리하여 관리할 수 있는 방법java OOP 관련 게시글을 작성하다가 Spring에서 필수적으로 알아야 하는 AOP/IoC/DI/PSA에 대해 정리한 글을 공유하면 좋을 것 같아 글을 남겨 본다.  그중에서도 이번 게시글은 AOP에 관련된 내용이다.zigo-autumn.tistory.com  의존성 주입(DI : Dependency Injection)이란?DI란 외..

Dev/Springboot 2024.05.06