본문 바로가기
Java/spring

신세계(Advice, @Order, var, MSA첫경험..!)

by 티코딩 2024. 9. 3.

어제부터 첫회사에 출근하게 되었다!

회사분들이 내 블로그를 잘 봤다고 하셨다..너무 부끄럽다..

 

집에서 거리가 좀 있어서 매일 6시에 일어나서 출근해야한다.. 회사에서 프로젝트의 구조를 간단하게 설명을 들었다..

솔직히 너무 처음보는 구조라 이해가 정말 힘들어서 아..공부를 죽어라 해야겠구나 싶었다.

오늘은 이사님께서 짜신 유저쪽 코드를 보면서 처음보는것들을 찾아보면서 정리해보았다.

 

ㅇ Advice

advice라는 디렉토리가 따로 존재하길래 한번 보니 예외처리에관한 코드들이 있었다.
찾아보니 보통 Spring MVC에서 예외 처리, 응답 데이터 가공, 또는 공통적인 로직을 처리하기 위한 클래스들을 모아 놓은 패키지로 사용된다고 한다. 여기에 해당하는 클래스들은 주로 @ControllerAdvice, @RestControllerAdvice, @ExceptionHandler와 같은 애너테이션을 사용해서 예외처리를 한다고 한다.
  @ControllerAdvice나 @RestControllerAdvice를 사용하여 애플리케이션 전반에 걸쳐 발생하는 예외를 일관되게 처리한다. 특정 예외가 발생했을 때 어떻게 응답할지에 대한 로직을 관리한다. 세가지 클래스가 있었는데, ApiCommonAdvice는 대충 공통적인 예외처리,
FieldErrorMessage, FieldErrorMessageCollection 클래스는 필드의 오류를 처리하고, 오류 메시지를 생성해서 응답으로 보내는데 사용 되는것 같았다.

 

ㅇ @Order(value = 1)?

이 애너테이션이 @RestControllerAdvice 가 붙은 클래스에 같이 붙어있어서 의아했다. 왜이애너테이션을 쓰셨을까? 싶어서 찾아보니, 여러개의 예외처리 advice가 있을 때, 어떤 advice가 먼저 적용될지를 결정하는거였다.

ApiCommonAdvice가 공통적인 예외처리를 해서 이 클래스에 붙은걸로 예상된다.

 

ㅇ var?

변수타입에 var이 있어서 이게 머징? 했다. 자바스크립트 코드 볼때나 봤던거같은데.. 이건분명 Java인데....

알고보니 Java10부터 도입된 지역 변수 타입 추론 기능이라고 한다. 엄청 흥미로웠다. 지역 변수를 선언할 때 명시적으로 타입을 지정하지 않고, 컴파일러가 변수의 타입을 자동으로 추론해서 알잘딱깔센 해준다는거다. 정말 신기하다.

언제 써야할까? 이런경우 쓰기 좋다.

1) 타입이름이 긴경우

Map<String, List<Integer>> userScoresMap = new HashMap<>(); // 명시적인 타입
var userScoresMap = new HashMap<String, List<Integer>>(); // var 사용

 

2)메서드 명에서 유추가 충분히 가능한경우

var user = userService.getUserById(userId); // 메서드명에서 유추 가능

 

 

ㅇ MSA 첫경험..!

전에 내가 모놀리식구조로만 짜봐서 MSA구조로 한번 프로젝트를 해보고싶어서 찾아보면서 정리한 포스팅이 있다.

실제로 실무에서 사용하는 MSA를 보니 아 이렇게 돌아가는구나(사실 정확힌 모름) 싶었다.

구조를 정확하게 포스팅하진 못하겠지만 나중에 혼자서 짜야하니 연습은 해봐야겠다 싶다.

내가 여지껏 만들었던 프로젝트는 진짜 애들 장난같다.

열심히 해보자!!!

 

ㅇ etc

젠킨스, 쿠버네티스, 도커컴포즈, 등등...

너무 어렵다..! 출퇴근하면서 강의를 좀 봐야겠다.