• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

커스텀 어노테이션을 클래스 형태로 등록하는 이유

21.11.23 17:11 작성 조회수 266

3

안녕하세요

 

강의에서 직접 애노테이션(MyIncludeComponent, MyExcludeComponent) 을 인터페이스로 선언한다고 배웠습니다. 

 

그런데 테스트코드 ComponentFilterAppConfigTest 클래스의 @ComponentScan 내부에서는 MyIncludeComponent.class 로 등록하더라구요, 

인터페이스로 선언했는데 왜 .class 를 붙여 등록하는지 궁금합니다..!

 

 

 

답변 1

답변을 작성해보세요.

6

David님의 프로필

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

.
감사합니다.

파이후님의 프로필

파이후

질문자

2021.11.25

자세한 답변 감사합니다 !