해결된 질문
작성
·
430
1
@Getter
@RequiredArgsConstructor
public class ErrorResponse {
private final String code;
private final String message;
}
여기서 @Getter 애노테이션을 쓰는 이유가 무엇일까요?
답변 1
0
@Getter 애노테이션은 다른 클래스에서 해당 클래스의 변수를 확인할 수 있게 하기 위해 필요합니다.
원래는 code변수와 message 변수를 가져가서 볼 수 있도록 getCode(), getMessage() 라는 메서드로
다음과 같이 사용할 수 있습니다. 하지만 Lombok에서는 편의성을 제공하는 어노테이션으로 @Getter를 제공합니다.
@RequiredArgsConstructor
public class ErrorResponse {
private final String code;
private final String message;
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
@Getter를 사용하면 아래와 같이 가독성이 좋아지고, 간결해집니다.
@Getter
@RequiredArgsConstructor
public class ErrorResponse {
private final String code;
private final String message;
}
예시를 들어보겠습니다.
먼저 Test 클래스의 main 함수에 code 401, message Unatuhorized라는 ErrorResponse 객체를 만들었다고 하겠습니다.
public class Test {
public static void main(String[] args) {
String code = "401";
String message = "Unauthorized";
ErrorResponse testResponse =
new ErrorResponse(code, message);
}
}
위의 코드에서 'Response의 code가 401 이면 권한을 주라 메시지를 출력하라'라는 코드를 만든다고 할 때
Getter가 없다면 다음과 같이 testResponse의 code를 확인할 수 없게 됩니다.
code, message를 확인기 위해서는 위해서는 Getter가 필요합니다.
@Getter 설정을 했고 예시 코드를 모두 작성했습니다. 이제 실행시켜보겠습니다.
public class Test {
public static void main(String[] args) {
String code = "401";
String message = "Unauthorized";
ErrorResponse testResponse =
new ErrorResponse(code, message);
String testResponseCode = testResponse.getCode();
if (testResponseCode.equals("401")){
System.out.println("권한을 주세요.");
}
}
}
출력값 : 권한을 주세요.
결론 : @Getter를 꼭 써야 하는 건 아니지만 그럴려면 get 메서드를 만들어서 변수를 확인할 수 있게 해줘야 합니다..
학습 단계 또는, 초기 개발 단계에서 get 메서드를 관리하는 것이 불필요하다면 @Getter를 사용하는게 편의성과 가독성에 좋습니다.
아 @getter 애노테이션을 쓴 이유가
여기서 값을 꺼내오기때문에 쓰는거군요