여러가지 어노테이션을 제공하고 컴파일 과정에서 자동으로 개발자가 원하는 메소드를 생성/주입 방식으로 동작하는 라이브러리
여러 클래스에서 반복되는 getter, setter, toString 등의 메소드를 자동으로 만들어준다.
복잡하고 반복되는 코드를 자동생성 해줌으로써 생상선이 향상되고 코드의 가독성 및 유지보수성을 높일 수 있다.
코드가 직접 눈에 보이지 않으므로 직관성이 떨어질 수 있다.
-> 설명 생략
클래스 내부에 선언된 모든 필드마다 하나의 파라미터를 가진 생성자를 생성해준다.
파라미터가 없는 기본 생성자를 생성해준다.
(force=true) -> null, 0 등 기본 값으로 초기화 된다.
(access = AccessLevel.PROTECTED) -> 매개변수가 없는 생성자를 생성하되 다른 패키지에 소속된 클래스는 접근을 불허한다.
특별한 처리가 필요한 각 필드마다 하나의 파라미터를 갖는 생성자를 생성해준다.
toString() 메소드를 자동으로 생성해준다.
(exclude = "필드명") -> 기재된 필드를 toString() 결과에서 제외시킨다.
equals, hashCode 메소드를 자동으로 생성해준다.
euqals -> 두 객체의 내용이 같은지, 동등성을 비교하는 연산자
hashCode -> 두 객체가 같은 객체인지, 동일성을 비교하는 연산자
(callSuper = true) -> 부모 클래스 필드 값들도 동일한지 체크. false면 해당 클래스의 필드 값들만 고려한다. false가 기본값.
위 모든 어노테이션을 한꺼번에 설정해주는 어노테이션