@Builder 객체 생성 시 인자가 많을 경우 쉽고 안전하게, 순서와 상관없이 객체를 생성 가능 안전한 객체 생성 패턴을 위해 Assert를 이용하여 적절한 예외처리를 해야한다. Assert.hasText(bankName, "bankName must not be empty"); this.bankName = bankName;

@Getter @Setter 데이터를 보호하기 위해 사용(클래스 생성시) 인스턴스 변수를 반환하고(getter), 대입하거나 수정(setter) @Setter 사용 시 값을 바꿀 수 있으니 주의(entity에는 사용 x)

@AllArgsConstructor -> @RequiredArgsConstructor 클래스가 존재하는 모든 필드에 대한 생성자를 자동으로 생성한다.

@NoArgsConstructor 파라미터가 없는 기본 생성자를 생성 -> 초기화 시 이용

@AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자를 만듦

@RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 만듦

@Autowired vs @RequiredArgsConstructor 의존성 주입 x 생성자 주입 o

private final을 이용하여 단일 생성자인 경우 의존성 주입 가능

순환참조 방지하기 위해 생성자 주입 권장

질문 예상

프론트에서 인가코드 요청 시에

Http 프로토콜은 기본적으로 Client의 요청이 있을 때만 서버가 응답하는 단방향 통신이므로 채팅과 같은 실시간 서비스를 요구하는 작업에는 적합하지 않습니다. 그에 반해 socket 통신은 server와 client가 지속적으로 연결을 유지하고, 양방향으로 통신을 하여 사용자가 새로고침과 같은 요청을 하지 않아도 최신 데이터가 적용된 웹을 볼 수 있게 해줍니다.