Lombok
게터,세터,ToString과 같은 반복적인 자바코드를 줄여주는 라이브러리
인텔리제이에서 설치하기
파일 - 셋팅에 들어간다
플러그인을 선택, 롬복을 검색해서 인스톨한다
저는 이미 설치해서 인스톨드에 뜨는데 그게아니면 설치한후 어플라이후 오케이를 누르면 된다
그 후 셋팅에 다시 들어가서 빌드 - 컴파일러 - 어노테이션 프로세서에서 인에이블어노테이션프로세싱을 누르고 오케이를 누른다.
그 후 pom.xml 에 들어가서 디펜던시를 추가합니다
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
롬복을 꼭 디팬던시스 사이에 추가해줘야함
저장을 하게 되면 추가 되는 것을 확인해야한다.
디펜던시를 눌러서 들어가있는것을 확인할 수 있다.
롬복 라이브러리의 어노테이션들
@Getter and @Setter = 코드를 컴파일 할때 속성들에 대한 게터세터메소드 생성
*게터세터를 사용하는 이유 클래스필드에 직접 접근하는것을 막기 위해서임
@FieldNameConstants 필드이름콘스탄트
@ToString = toString()메소드 생성
*투스트링 = 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드(오버라이드//재정의)
@AllArgsConstructor 모든 속성에 대한 생성자 생성
@RequiredArgsConstructor 초기화되지 않은 Final, 논널어노테이션이 붙은 필드에 대한 생성자 생성
@NoArgsConstructor = 파라미터가 없는 기본 생성자 생성
@Log 로그 변수 자동생성( @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger, @CustomLog)
@Data투스트링,이퀄스엔해쉬코드,게터,세터,리콰이얼드알규스콘스트럭터를 합친 어노테이션
@Builder 빌더패턴을 이용한 객체 생성 // 객체를 정의하고 그객체를 생서할 때 보통 생성자를 통해 생성하는 것을 생성하는데 객체를 생성하는 별도 빌더를 두는 방법이 있음(파라미터가 많으면 가독성이 안좋으니까 빌더를 두는 것임)
@SuperBuilder 부모클래스에 빌더를 하기 위해
@Singular 목록에 정확히 하나의 요소가 포함되어 있는지 여부를 나타내는 부울값을 리턴
@Delegate 클래스인스턴스와 해당 클래스의 인스턴스 메서드 또는 정적 메서드를 참조하는 데이터 구조체인 대리자를 나타냄
@Value 불변(immutable)클래스 생성
@With 불변,세터 클론을 생성하지만 필드가 하나 변경된 메소드
@SneakyThrows
@StandardException
@val 최종 지역변수
@var지역변수
@NonNull 해당변수가 널체크, NullpointerException예외 발생
@EqualsAndHashCode equals()와 hashcode()메소드 생성
*equals 개체가 같은지 확인 // hashcode 알고리즘에 생성된 정수값 // 이퀄스 비교에 사용되는 정보가 변경되지 않는다면, 애플리케이션이 실행되는 동안 그 객체의 해쉬코드메소드는 몇번을 호출해도 일관되게 항상 같은 값을 반환해야한다.
https://projectlombok.org/features/all
Stable
projectlombok.org
DTO생성
package com.example.demo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class UserDto {
private String name;
private String age;
}
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping(value = "/test")
public UserDto test(){
UserDto userDto = new UserDto();
userDto.setAge(18);
userDto.setName("malja");
return userDto;
}
}
컨트롤러에 적용해서 테스트가 들어가면 안에 나이와 이름을 넣었음
잘 돌아가는 것을 확인할 수 있음
댓글