인프런 커뮤니티 질문&답변

류돌프님의 프로필 이미지
류돌프

작성한 질문수

스프링 핵심 원리 - 기본편

필터

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

해결된 질문

작성

·

331

3

안녕하세요

 

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

 

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

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

 

 

 

답변 1

6

안녕하세요. 파이후님, 공식 서포터즈 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

.
감사합니다.

류돌프님의 프로필 이미지
류돌프
질문자

자세한 답변 감사합니다 !

류돌프님의 프로필 이미지
류돌프

작성한 질문수

질문하기