Spring Lombok 어노테이션 사용
프로젝트 생성
1. File -> New ->Project
2. Spring Initailizr -> Next
3. 설정 변경
4. Developer Tools -> Lombok 체크
5. 프로젝트 생성 위치 확인 후 생성
6. Test에서 예시를 작성할 예정이므로 build.gradle에 추가해줍시다.
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
Lombok이란?
▶ 어노테이션 기반으로 Construct ToString Getter 등등을 자동적으로 생성해주는 라이브러리입니다.
제가 자주 사용하는 어노테이션들을 알아보겠습니다. Lombok을 사용한 코드와 사용하지 않은 코드를 보여드리겠습니다.
1. @AllArgsConstructor
-> 클래스에 존재하는 모든 필드에 대한 생성자를 생성해줍니다.
@AllArgsConstructor
public class Member {
private String email;
private String name;
private int age;
}
public class Member {
private String email;
private String name;
private int age;
public Member(String email, String name, int age) {
this.email = email;
this.name = name;
this.age = age;
}
}
2. @Builder
-> Builder는 인자가 많을 때 어떠한 인자를 넣어야 하는지 필요없는 인자 인지 확인이 가능하다.
public class Member {
private String email;
private String name;
private int age;
@Builder
public Member(String email, String name, int age) {
this.email = email;
this.name = name;
this.age = age;
}
}
Member kim = Member.builder()
.email("google@email.com")
.name("kim")
.age(10).build();
3. @Data
-> @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode.를 종합적으로 합쳐놓은 어노테이션이다.
@Data
public class Member {
private String email;
private String name;
private int age;
}
Member member = new Member();
member.setAge(10);
member.setEmail("google");
member.setName("kim");
int age = member.getAge();
String string = member.toString();
System.out.println(age);
System.out.println(string);
4. @Getter
-> 필드 변수에 대한 get() 메소드를 생성해준다.
@Getter
public class Member {
private String email;
private String name;
private int age;
}
public class Member {
private String email;
private String name;
private int age;
public String getEmail() {
return email;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
5. @NoArgsConstructor
-> access로 설정한 범위를 default 생성자를 만들어 외부에서 default 생성자를 무분별하게 호출하지 못하게 한다.
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Member {
private String email;
private String name;
private int age;
public String getEmail() {
return email;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Member {
private String email;
private String name;
private int age;
private Member(){};
}
6. @Setter
-> @Getter과 동일학 set()을 생성해준다.
@Setter
public class Member {
private String email;
private String name;
private int age;
}
public class Member {
private String email;
private String name;
private int age;
public void setEmail(String email) {
this.email = email;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
7. @RequiredArgsConstructor
-> 아직 초기화 되지 않은 final 필드에 대하여 의존성을 주입해줍니다. spring에서는 Bean을 이용할 때 많이 사용됩니다.
@RequiredArgsConstructor
public class Member {
private final String email;
private String name;
private int age;
}
public class Member {
private final String email;
private String name;
private int age;
public Member(String email) {
this.email = email;
}
}
8. @ToString
-> toString() 메소드를 오버라이딩하여 각각의 필드를 출력할 수 있도록 해줍니다. of={}를 이용하여 원하는 필드만 변환할 수 있게 해줄 수 있습니다.
@ToString(of = {"age, name"})
public class Member {
private String email;
private String name;
private int age;
}
public class Member {
private String email;
private String name;
private int age;
@Override
public String toString() {
return "name: "+name+"\n"+"age: "+name;
}
}
지금까지 Lombok에서 자주 사용되는 어노테이션들을 알아보았습니다. 보시다시피 코드의 길이가 많이 주는 것을 알 수있습니다. 많이 애용합시다.. 읽어주셔서 감사합니다.
'SpringBoot > spring 개념' 카테고리의 다른 글
SpringBoot는 싱글톤인데 어떻게 다중 요청을 처리할까?? (0) | 2021.12.31 |
---|---|
spring 컨테이너와 bean 개념 (0) | 2021.12.30 |
Springboot 프로젝트 생성 (0) | 2021.12.30 |
Spring, SpringBoot란? 개념정리 (0) | 2021.12.30 |
댓글
이 글 공유하기
다른 글
-
SpringBoot는 싱글톤인데 어떻게 다중 요청을 처리할까??
SpringBoot는 싱글톤인데 어떻게 다중 요청을 처리할까??
2021.12.31 -
spring 컨테이너와 bean 개념
spring 컨테이너와 bean 개념
2021.12.30 -
Springboot 프로젝트 생성
Springboot 프로젝트 생성
2021.12.30 -
Spring, SpringBoot란? 개념정리
Spring, SpringBoot란? 개념정리
2021.12.30