Backend

[Springboot] 개발하면서 생긴 궁금점들 기록(작성중 ..)

Fenderblue 2023. 12. 11. 22:46

(각 질문에 대한 설명을 자세히는 적어두지 않겠다. 기억이 안난다면 다시 찾아보자)

 

1. Query String과 Path Variable은 각각 언제 쓰면 좋은지?

RESTful API 설계 원칙에 따라서 다음과 같이 사용하는게 표준인 모양.

리소스 식별 -> Path Variable

정렬/필터링 -> Query String

https://velog.io/@jcinsh/Query-string-path-variable

 

올바른 URL 설계 : 1) Query string과 Path Variable 이해하기

이 글은 When Should You Use Path Variable and Query Parameter?란 영문글을 한글로 요약 정리한 것입니다. 자세한 내용은 원문을 참고해 주세요.웹에서 특정 데이터를 전송하고 받기 위해서는 어디(End-point)에

velog.io

 

2. url에서의 표기법은 어떻게 할까?

Path Variable은 카멜케이스, 그밖에는 가급적 소문자와 케밥케이스를 쓰자.

https://covenant.tistory.com/241

 

REST란? REST API 디자인 가이드

REST란? REST API 디자인 가이드 시작하며 작년 저의 커리어의 첫 번째 회사인 스타트업 입사 첫날 사수님이 REST API를 구현해본적이 있냐고 물어보셨습니다. 그런 경험이 없다고 하니 REST API 디자인

covenant.tistory.com

 

3. @Autowired의 필드 주입과 생성자 주입 차이?

-> 필드 주입은 간단하지만 단점이 많아 가급적 생성자 주입 방식을 사용.

필드 주입방식은 테스트가 어렵고 필드를 final로 선언할수 없음. 

*참고로, 스프링 4.3이상부터는 단일 생성자는 @Autowired 생략가능하다함! 

 

 

4. 왜 Builder 패턴이 유용한거지? 클래스에서 setter 선언하면 되지 않는가(자바빈즈패턴)??

https://inpa.tistory.com/entry/GOF-%F0%9F%92%A0-%EB%B9%8C%EB%8D%94Builder-%ED%8C%A8%ED%84%B4-%EB%81%9D%ED%8C%90%EC%99%95-%EC%A0%95%EB%A6%AC

 

💠 빌더(Builder) 패턴 - 완벽 마스터하기

Builder Pattern 빌더 패턴(Builder Pattern)은 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴이다. 생성자에 들어갈 매개 변수를 메서드로 하나하나 받아

inpa.tistory.com

-> 1. 일관성 문제. 객체가 초기화될때 반드시 설정해야하는 필수 매개변수들에 대해 실수로 해당 변수들의 setter 호출을 안했다면

이 객체는 일관성이 무너지게 된다. 이를 아예 방지하기 쉽지않은것임

2. setter메소드는 외부적으로 노출되어 있기 때문에, 언제든지 중간에 객체 조작이 되기 쉬움. 따라서 불변함 보장이 어려움 

그러나 지나친 빌더 남용은 x, 필드가 넘 적거나 필드 변경 가능성이 없는경우면 차라리 생성자나 정적 팩토리 메소드를 이용하는게 좋을수도 있다고 함.

롬복에서 제공하는 @Builder 어노테이션을 사용하면 builder가 알아서 정적 내부 클래스로 만들어진다!