클래스의 특별한 종류
DTO를 편리하게 생성하기 위한 클래스
자바 16부터 공식 기능이 되었음
열거타입과 마찬가지로 자바 클래스의 종류
다른 클래스를 상속받을 수 없음
abstract 로 선언할 수 없고, 암시적으로 final로 선언됨
본문(body)에는 정적 필드, 정적 메소드, 정적 이니셜라이저, 생성자, 인스턴스 메소드, 중첩타입(클래스, 인터페이스, 열거형 등)을 선언할 수 있음
아래와 같이 필드 final 선언, 필드 초기화 생성자, 각 필드의 getter 메소드 생성이 필요없음
public class SampleRecord {
private final String name;
private final Integer age;
private final Address address;
public SampleRecord(String name, Integer age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public Address getAddress() {
return address;
}
}
@Mock
@Spy
@InjectMocks
- @Mock이나 @Spy 애노테이션이 붙은 field를 주입받음
@ExtendWith(MockitoExtension.class) // MockitoExtension를 가져와 사용
get방식은 실제 엔티티를 반환하는 것이 아닌 프록시(중계 서버)를 반환하기 때문에 사용 전까진 DB에 접근하지 않음.
find방식은 엔티티에 접근하여 실행 시 DB와 접근하여 select문을 실행함