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.31SpringBoot를 학습한 지 얼마 되지 않았을 때 생긴 궁금점이었습니다. Spring은 Bean 객체를 싱글톤으로 관리하는데 어떻게 다중 요청을 처리하는지에 대하여 궁금증이 생겼습니다. Thread에 관한 지식이 있었다면 쉽게 해결 가능했습니다. Thread부터 하나씩 알아보겠습니다. 1. Thread란? ▶ 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 여러 개의 Thread를 가지는 프로세스를 멀티 스레드 프로세스라고 합니다. 이해를 돕기 위해 코드로 보겠습니다. class Example extends Thread { int num; public Example(int num) { this.num = num; } public void run() { System.out.p… -
spring 컨테이너와 bean 개념
spring 컨테이너와 bean 개념
2021.12.301. Spring Container란? ▶ Spring Container는 java 객체의 life cycle를 관리하고, 생성된 객체들에게 추가적인 기능을 제공합니다. Spring Container에서 관리하는 객체를 Bean라고 부릅니다. bean에는 IoC, DI가 적용됩니다. 1-1. BeanFactory와 ApplicationContext ▶ BeanFactory와 ApplicationContext 모두 Spring Container입니다. 아래와 같이 구성됩니다. ▶ BeanFactory는 bean을 생성, 등록, 조회 등등 빈을 관리하는 역할을 합니다. BeanFactory.getBean(빈 이름, 반환형)을 통해 인스턴스화 할 수 있습니다. @SpringBootTest public clas… -
Springboot 프로젝트 생성
Springboot 프로젝트 생성
2021.12.30Intellij를 통해 springboot 프로젝트를 바로 생성해보겠습니다. 아래의 이미지 순서대로 따라와주시면 됩니다. 1. File -> new -> Project…. 2. SpringInitailizr -> Next 3. group, Artifact 본인이 원하는대로 작성해줍니다. java 11을 활용한 gradle 프로젝트로 만듭니다. 4. Web -> spring web 체크 5. 프로젝트 위치를 설정해줍니다. 6. 프로젝트 생성하는데 시간이 걸릴 수 있으니 기다려주시고 아래와 같이 뜨면 프로젝트가 생성된 것입니다. 7. 프로젝트를 실행해보겠습니다. ( 둘중에 하나를 실행시키면 됩니다. ) 8. spring 프로젝트의 기본 port는 8080이므로 localhost:8080을 주소창에 입력해고… -
Spring, SpringBoot란? 개념정리
Spring, SpringBoot란? 개념정리
2021.12.30Back-End 개발자를 목표로 잡고 SpringBoot를 학습한 것을 공유하려고 합니다. 1. framework란? ▶ 기본을 구성하는 뼈대입니다. 이러한 뼈대가 제공해주는 것은 애플리케이션을 개발하는데 있어서 템플릿과 같다고 할 수 있습니다. 그렇다면 framework를 왜 사용할까요?? 정답은 여러가지 설정과 서로 연결된 것으로 인해서 애플리케이션을 완성하는데 많은 비용이 절감됩니다. ( 여기서 비용은 시간 혹은 노동력이라고 할 수 있습니다.) 2. Springframework란? ▶ Springframework는 java 기반의 웹 어플리케이션을 만들 수 있는 프레임워크입니다. 전체적인 구조는 아래와 같습니다. 2-1. 우리는 왜 spring을 사용할까?? Spring은 자바 객체, 라이브러리들을…
댓글을 사용할 수 없습니다.