본문 바로가기
Java/Library

lombok #2 [Lazy Getter]

by Lee David 2020. 7. 3.
반응형

Lazy Getter

개발자 입장에선 게으르다는 뜻이 딱히 나쁜 뜻은 아닙니다.

문서를 정리하거나 데이터 등을 수집할 때에도 수동으로 작업하기 보단 자동화하거나 혹은 만일의 사태에 대비하는 경우도 많은데 사실 이 모든게 수동으로 작업되는 계산들을 최소화 하기 위한 것들이 아닐까 싶습니다.

 

java에서 지원하는 Lazy 클래스나 lombok의 lazy getter도 위에 말한 내용과 비슷하게 접목되지 않을까 싶습니다.

 

만약 우리가 멀티 스레드 환경에서 static한 변수나 Dao 객체의 파라미터에서 특수한 계산하는 경우에 비집고 들어오는 타 스레드들 때문에 내가 원하는 값이 아닌 제 2의 3의 경우가 발생하게 되는데요.

 

Lazy Getter는 파라미터의 값이 비집고 들어오는 타 스레드의 영향을 받지 않고 자신이 계산된 값을 리턴시켜 줍니다.

(synchronized와 같은 기능이라고 보시면 됩니다.)

 

  • 예제 코드
private String userName;
@Getter(lazy = true) private String fileName = makeFileName();

private String makeFileName() {
    return this.userName + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}

극한의 경우일테지만 위와 같이 userName이라는 파라미터가 자주 바뀌고 해당 객체를 수도 없이 부르게 될때에는 원하지 않는 값이 출력될 수 있는 경우를 막아주게 되는 간단한 상황에 쓰일만한 코드를 만들어 보았습니다.

 

lombok 대표 이미지 입니다.

반응형