> For the complete documentation index, see [llms.txt](https://chloe-codes1.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chloe-codes1.gitbook.io/til/spring/spring-annotations/00_lombok.md).

# Lombok

## What is Lombok?

It automatically generates frequently used code during development such as Getter, Setter, default constructor, toString, etc. using annotations

## Lombok Annotations

### @Getter

Generates get methods for all fields declared within a class

### @RequiredArgsConstructor

* Generates a constructor with all `final` fields as arguments
  * Fields without final are not included in the constructor
* Reason for use
  * To solve the inconvenience of having to continuously modify constructor code every time the dependency relationship of the class changes

### @NoArgsConstructor

* Generates a default constructor
* Has the same effect as `public Post() {}`

### @Builder

* Creates a Builder pattern class for the corresponding Class
* When declared at the top of a Class, only fields included in the constructor are included in the builder
* Options
  * `toBuilder`
    * default = false
    * When set to true, you can call the `toBuilder()` method on an instance created with the builder to create a new instance via the Builder Pattern based on that instance's values
