자바(35)
-
Spring에서 @RequestBody로 전달받는 객체의 필드에 final 키워드를 붙일 수 있을까?
앞으로는 미션을 진행하며 피드백을 받거나 궁금했던 내용 중 조금 깊게 찾아봤던 내용들에 대해 한번 글을 작성해보려고 한다.(그래서 잘못 작성된 내용도 좀 있을 수 있다. ㅎㅎ) 그 중 첫번째는 바로 @RequestBody 어노테이션에 관한 내용이다. ㅎㅎ 이번에 웹 자동차 게임 미션을 진행하고 가장 첫번째로 받았던 질문은 다음과 같다. 참고로 위에 내가 한 답변 중에 틀린 내용도 있었다. ㅎㅎ 질문을 받은 코드는 다음과 같다. GameRequest 클래스는 다음과 같이 사용된다. Controller 내부에서 PostMapping을 전달받을 때 사용되는 dto 객체이다. 리뷰어께서 질문 주셨던 부분은 파일 전체적으로 필드 내부에 final 키워드를 사용하고 있지만, GameRequest에서만 final 키..
2023.04.18 -
스프링 공식 문서 뿌수기(2), Spring MVC의 Annotated Controllers - 1
지난주 금요일 우테코 레벨 2 피드백 강의 시간에 브리가 각 미션마다 크루들이 공부했으면 하는 커리큘럼에 대해 알려줬다. 그 내용을 하나씩 정리해보려고 한다. 우선 스프링의 가장 기본적인 내용인 MVC의 Annotated Controller를 먼저 정리해보면서 공부하려 한다. Spring MVC 우선 스프링의 웹 MVC가 무엇인지 먼저 알아보자. Spring Web MVC는 Servlet API를 기반으로 구축된 최초의 웹 프레임워크라고 한다. Servlet은 이전 포스팅에도 올렸듯이 Java EE에 포함되어있던 기존의 기능 중 하나였는데 스프링이 이를 그대로 반영했다고 알고 있다. Servlet이 무엇인지 아직은 정확히 모르지만 차근차근 공부를 해가야겠다. 아무튼 Spring Web MVC는 웹 프레임..
2023.04.17 -
스프링 공식 문서 뿌수기 (1), 아니 그래서 Spring이 뭔데?
우테코 레벨 2부터는 스프링 프레임워크를 사용한다. 이번 미션을 진행하면서 스프링 프레임워크에 대해 잘 모른다는 생각이 들어 공식 문서를 한번 정리해보고자 한다! Spring Framework Overview 스프링 프레임워크의 현재(2023년 04월 14일 기준) 버전은 6.0.8이다. 스프링 프레임워크는 Java 언어가 어플리케이션을 만드는데 도움을 주는 도구로 생각하면 된다. 주의할 점은 스프링 프레임워크 6.0 버전 이후에는 Java 17 이상을 필요로 한다. 이 때문에 최근 프로젝트를 진행할 때에는 Java 17로 작업을 진행했는데 11버전만 쓰다가 17버전을 쓰니 Record도 새롭게 등장하고, 프로퍼티 설정 등에도 차이가 나서 이를 관리하기 다소 어려웠다. Spring이 무슨 의미야? The..
2023.04.14 -
아이템 51. 메서드 시그니처를 신중히 설계하라
아이템 51. 메서드 시그니처를 신중히 설계하라 개별 아이템으로 두기 애매한 API 설계 요령들을 모아놓은 챕터이다. 메서드 이름을 신중히 짓자. 메서드 이름은 항상 표준 명명 규칙(아이템 68)을 따라야 한다. 애매한 경우에는 자바 라이브러리의 API 가이드를 참조하는 것이 좋다. 다만 긴 이름은 피하는 것이 좋다. 편의 메서드를 너무 많이 만들지 말자. 모든 메서드는 각각 자신의 소임을 다해야한다. 메서드가 너무 많은 클래스는 문서화하고, 사용하고 테스트하고, 유지보수 하는 일에 어려움을 겪을 수 밖에 없다. 자신의 각 기능을 완벽히 수행하는 메서드로 제공을 해야하며, 편의 메서드는 확신이 서지 않는 이상 만들지 않는 것이 좋다. 매개변수 목록은 짧게 유지하자. 최대 4개까지만 전달받는 것을 추천한다..
2023.03.22 -
단일 책임 원칙, 하나의 객체는 하나의 책임을 갖는다.
SOLID 원칙 중 'S' 하나의 객체가 하나의 책임만 져야한다! → 클래스를 단 한 가지의 목표만 가지고 작성해야 한다는 것을 의미한다. 애플리케이션 전반에서 높은 유지보수성과 가시성 제어 기능을 유지하는 원칙이다. 만약 클래스 하나가 여러 개의 목표를 가지고 있는 경우에는? 단일 책임 원칙을 따르지 않는 경우 직사각형 면적을 구하고 단위를 변환하는 문제를 다음과 같은 클래스에서 구현할 수 있다. package SingleResponsePrinciple; public class RectangleAreaCalculator { private static final double INCH_TERM = 0.0254d; private final int width; private final int height; p..
2023.03.14 -
아이템 68, 항상 표준 명명 규칙을 따라야한다.
아이템 68, 항상 표준 명명 규칙을 따라야한다. 1. 철자 규칙 특별한 이유가 없는 한 철자 규칙은 반드시 따라야한다. 이 규칙을 어기게되면 API로 사용하기도 어려울 뿐더러 유지보수를 하기도 어렵다. 철자 규칙은 다음과 같은 종류가 있다. 패키지와 모듈 이름 패키지와 모듈 이름은 각 요소를 점(.)으로 구분하여 계층적으로 짓는다. 요소들은 모두 소문자 알파벳이나 숫자로 이뤄진다. 조직의 인터넷 도메인 이름을 역순으로 사용한다. ex) com.google 표준 라이브러리와 선택적 패키지들은 java와 javax로 시작한다. 패키지 이름의 각 요소는 일반적으로 8자 이하의 짧은 단어로 한다. 이때 약어를 사용하기도 한다. ex) utilities (x) → util (o) 요소의 이름은 한 단어나 각 단..
2023.03.08