본문 바로가기
개발

[Lombok] @Setter

by angeloper 2023. 7. 14.
반응형

Lombok은 자바 개발자들에게 보일러플레이트 코드(boilerplate code)를 자동으로 생성하여 개발 생산성을 향상해 주는 훌륭한 라이브러리라고 전 편에서도 설명드렸습니다. @Setter 메서드 또한 Lombok을 사용하는 개발자들에게는 많이 사용되는 메서드 중 하나로, 필드에 대한 setter 메서드를 자동으로 생성해 주는 기능을 제공합니다.

Lombok의 @Setter에 대해 상세히 알아보도록 하겠습니다.

@Setter 어노테이션클래스의 필드에 적용되며, 이 어노테이션이 있는 필드에 대해 Lombok은 자동으로 해당 필드에 대한 setter 메서드를 생성합니다. 이렇게 생성된 setter 메서드는 필드의 값을 설정하는 역할을 수행합니다. 따라서 우리는 직접 setter 메서드를 작성할 필요 없이 @Setter 어노테이션을 사용하여 코드를 더 간결하게 작성할 수 있습니다.

 

Lombok의 @Setter를 사용하는 방법은 매우 간단합니다. 필드 위에 @Setter 어노테이션을 추가하기만 하면 됩니다.

 

예를 들어, 다음과 같은 코드를 살펴보겠습니다:

import lombok.Setter;

public class Person {
    @Setter
    private String name;

    @Setter
    private int age;
}

위의 예시에서는 @Setter 어노테이션을 name과 age 필드 위에 추가했습니다. 이제 Lombok은 자동으로 setName()과 setAge() 메서드를 생성합니다. 따라서 우리는 아래와 같이 생성된 setter 메서드를 사용할 수 있습니다:

Person person = new Person();
person.setName("John");
person.setAge(25);

위의 코드에서 볼 수 있듯이, @Setter 어노테이션을 사용함으로써 setter 메서드를 간단히 호출할 수 있습니다. 이렇게 필드에 대한 setter 메서드를 자동으로 생성하는 것은 코드 작성과 유지 보수를 더욱 편리하게 만들어줍니다.

 

또한, 클래스 위에도 사용이 가능합니다. 

import lombok.Setter;

@Setter
public class Person {
    private String name;
    private int age;
}

위 예시의 2개의 코드를 사용함에 있어 다른 부분클래스 위에 추가하는 것은 전체 필드에 대해서 Setter 메서드가 생성된다는 것이며, 필드 위에 추가하는 것은 일부 필드만 추가가 가능하다는 점이 다른 부분입니다.

 

@Setter 어노테이션선택적으로 인자를 받을 수도 있습니다. 예를 들어, @Setter 어노테이션을 @Setter(AccessLevel.PROTECTED)와 같이 사용하면, 생성된 setter 메서드의 접근 제어자를 protected로 설정할 수 있습니다. 이렇게 함으로써 외부에서의 무분별한 접근을 제한하고, 캡슐화를 유지할 수 있습니다.

 

하지만, @Setter 어노테이션을 남용하는 것@Getter에서 설명드린 것과 같이 객체의 불변성을 깨뜨릴 수 있으며, 필드의 값이 외부에서 무분별하게 변경될 수 있는 상황을 초래할 수 있습니다. 따라서, Lombok의 @Setter 어노테이션을 사용할 때는 신중하게 선택하고, 불변 객체를 유지해야 하는 경우에는 사용하지 않는 것이 좋습니다.

 

반응형