클래스 정보 조회

@Service
public class BookService {

    @Autowired
    BookRepository bookRepository;

}
@RunWith(SpringRunner.class)
@SpringBootTest
public class BookServiceTest {
    @Autowired BookService bookService;

    @Test
    public void di() {
        Assert.assertNotNull(bookService.bookRepository);
    }
}

어떻게 bookService.bookRepositorynull이 아닌 걸까?

클래스 정보 조회

리플렉션의 시작은 Class<T>다.

이밖에도 상위 클래스, 인터페이스, 애너테이션, 생성자 등 다양한 정보를 불러올 수 있다.

애너테이션과 리플렉션

내가 아무리 애너테이션을 커스텀으로 만들어서 붙여도 getAnnotations()를 실행하면 조회되지 않는다. 애너테이션은 기본적으로 주석과 같은 취급을 받기 때문에 정보가 클래스까지는 남지만 바이트코드를 로딩했을 때 메모리 상에 남지는 않는다.

만약 런타임까지도 이 애너테이션을 유지하고 싶다면 아래와 같이 옵션을 줘야 한다.

Reference

Class

Last updated

Was this helpful?