11 Ocak 2021 Pazartesi

Lombok Kullanımı

Giriş
IntelliJ'de File/Settings menüsü kullanılarak Builder,Execution,Deployment ayarlarına gelinir. Compiler/Annotation Processors seçeneği seçilir ve "Enable Annotation processing" etkinleştirilir.

Maven
Şöyle yaparız
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.18</version>
  <scope>provided</scope>
</dependency>
Açıklaması şöyle
... Lombok is needed only at compile time. Because of that reason, the maven scope can (and should) be set to compile/provided.
Normalde bu gerekli değil ancak annotation processor'lara sıra vermek istersek şöyle yaparız
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
        <source>1.8</source> <!-- depending on your project -->
        <target>1.8</target> <!-- depending on your project -->
        <annotationProcessorPaths>
          <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
          </path>
        </annotationProcessorPaths>
      </configuration>
    </plugin>
  </plugins>
</build>
Gradle
Örnek
Şöyle yaparız
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.26'
Örnek
Şöyle yaparız
dependencies {
  compileOnly 'org.projectlombok:lombok:1.18.22'
  annotationProcessor 'org.projectlombok:lombok:1.18.22'
	
  testCompileOnly 'org.projectlombok:lombok:1.18.22'
  testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
}
Delombok
Lombok tarafından üretilen kodu görmeyi sağlar. IDE'ler delombok için menü sağlıyorlar. Şeklen şöyle. Burada 
1. Tüm anotasyonlar veya 
2. Sadece class içindeki bazı anotasyonları kapatabiliriz.



Lombok Anotasyonları
Açıklaması şöyle
Val - Creates a local variable with val which will be initialized based on initialization expression. The local variable will also be made final.
Var - Works exactly like Val but the local variable is not declared final.
@Setter - Add setter for all variables.
@Getter -  Add getter for all the variables.
@RequiredArgsConstructor - Generates constructor for each field.
@NoArgsConstructor - Creates a non-parametrized constructor.
@AllArgsConstructor - Creates a parametrized constructor containing all fields.
@ToString - Creates toString method.
@EqualsAndHashCode - Creates Equals and Hashcode implementation for fields in the class.

@Data - It is a quick way of combining features of @ToString, @EqualsAndHashCode, @Getter@Setter and @RequiredArgsConstructor
@Builder - Makes instantiation of class easier and provides a way to statically initialize fields in a class.
@Cleanup yazısına bakabilirsiniz.
@Log yazısına bakabilirsiniz.
@NonNull yazısına bakabilirsiniz.
@Slf4j yazısına bakabilirsiniz.
@SneakyThrows yazısına bakabilirsiniz
@Synchronized yazısına bakabilirsiniz
@UtilityClass yazısına bakabilirsiniz.
@Value yazısına bakabilirsiniz
@With yazısına bakabilirsiniz

Hiç yorum yok:

Yorum Gönder