-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
커스텀 어노테이션을 클래스 형태로 등록하는 이유
21.11.23 17:11 작성 조회수 266
3
안녕하세요
강의에서 직접 애노테이션(MyIncludeComponent, MyExcludeComponent) 을 인터페이스로 선언한다고 배웠습니다.
그런데 테스트코드 ComponentFilterAppConfigTest 클래스의 @ComponentScan 내부에서는 MyIncludeComponent.class 로 등록하더라구요,
인터페이스로 선언했는데 왜 .class 를 붙여 등록하는지 궁금합니다..!
답변을 작성해보세요.
6
David
2021.11.23
안녕하세요. 파이후님, 공식 서포터즈 David입니다.
.
Filter 내 classes 속성의 값으로 0개 이상의 Class 객체를 요구하고 있습니다.
클래스와 인터페이스 이름에 .class를 붙이게 되면 각각 Class<클래스>, Class<인터페이스>타입을 가지는 객체를 반환합니다.
ex) MyObject.class는 Class<MyObject>타입을 가지는 객체를 반환
따라서 Class 객체를 요구하는 곳에 "인터페이스.class"를 전달함으로써 Class<인터페이스> 타입을 가지는 객체가 전달되는 것입니다.
Class의 경우 실행중인 자바 애플리케이션 내 클래스와 인터페이스들을 표현하는 클래스라고 정의하고 있습니다.
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html
.
감사합니다.
답변 1