inflearn logo
강의

Course

Instructor

Hodolman's Stomach-Turning Development Show (SpringBoot, Vue.JS, AWS)

Data Validation-2

@Getter 애노테이션 역할

Resolved

523

taejin

43 asked

1

@Getter 
@RequiredArgsConstructor 
public class ErrorResponse {      
private final String code;     
private final String message; 
}

 

여기서 @Getter 애노테이션을 쓰는 이유가 무엇일까요?

vue.js aws spring-boot jpa spring-security

Answer 1

0

divdivdivv

@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를 확인할 수 없게 됩니다.

image

code, message를 확인기 위해서는 위해서는 Getter가 필요합니다.

image

@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를 사용하는게 편의성과 가독성에 좋습니다.

1

taejin

아 @getter 애노테이션을 쓴 이유가

.andExpect(jsonPath("$.code").value("400"))

 

여기서 값을 꺼내오기때문에 쓰는거군요

1

divdivdivv

$가 ErrorResponse를 나타낸다면 그렇습니다. 👍

Deprecated 관련 사항들

0

100

2

깃헙 collaboator 초대 관련

0

87

1

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

0

157

2

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

0

231

1

다중 데이터를 삭제 할 때

0

270

2

querydsl Q class 이슈

0

414

2

Windows WSL Vue 설정

2

246

1

Dip, @transactional

0

187

1

[vite] http proxy error: /auth/login

0

1043

2

로그인 하고 나서 GET요청으로 메인페이지 요청

0

234

2

GitHub Collaborator 초대 관련

0

256

2

Window에서 Vue.js 설정

0

321

2

(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"

0

713

2

collaboator로 초대받을 수 있을까요??

0

283

2

SecurityMockContext 로부터 유저 정보를 가져오기

0

261

1

given 부분이 길어질 때 어떻게 처리하면 좋을까요?

0

318

1

섹션9 프론트의 코드를 보고싶습니다,,,

0

423

1

Spring Security - defaultSuccessUrl 질문

0

625

1

강의 화면이 나오지 않습니다. 음성과 자막만 나와요

0

302

1

JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ

0

690

2

ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상

0

1179

2

섹션10 언제 나오나요?

0

484

1

CommentService에서 Repository를 호출하지 않는데도

0

342

1

Editor....를 활용한 패턴에 질문있습니다.

0

494

1