티스토리 뷰

JAVA 첫장을 다루는 시간이다.

Spring으로 개발을 해오면서 필드 및 메소드 상단에 Annotaion을 선언함으로써 런타임시 스프링에서 직접 객체를 생성하여 주입해주는데 이는 모두 Reflection에 의해 생성이 된다.

 

Reflection이란 객체를 통해 필드, 메소드, 생성자 정보를 얻을 수 있으며 클래스안에 존재하는 변수의 값도 조작할 수 있고 메소드를 호출할 수 있다. Reflection에 대해 들어보기만 하고 상세히 알아보는 시간이 없었는데 간단한 예제를 통해 알아보자.

클래스 및 필드, 메소드 생성

 

Reflection 이라는 클래스를 생성하여 필드와 메소드를 생성하였다.

필드 및 메소드에 주입할 어노테이션 생성

 

필드와 메소드에 값을 주입시키기 위해 어노테이션을 생성하였다. 코드 11라인을 보면 @Target이라는 어노테이션이 있는데 해당 어노테이션을 어느곳에다 주입할껀지 설정할 수 있다.

 

어노테이션 선언후 어노테이션 인자안에 원하는 타입과 값도 직접 세팅해줄 수 있고 default 값도 세팅해줄 수 있다. 만일 FIELD로 생성후 FIELD가 아닌곳에 어노테이션을 선언하면 컴파일에러가 발생한다

Reflection 적용할 클래스의 필드 및 메소드에 어노테이션 선언

2개의 어노테이션을 생성후 각각 필드와 메소드에 선언해주었다. 어노테이션 인자에 아무값도 할당하지 않았으므로
default로 선언된 값이 들어갈 것이다.

 

이제 Reflection을 이용해 값을 주입시켜보자

Reflection과 Annotaion으로 필드 및 메소드에 값 주입

 

코드 및 주석을 작성해놓았으니 이제 작성된 코드를 실행해보자 그런데 실행을 하게되면 다음과 같은 예외가 발생할 것이다.

 

 

예외 메세지를 읽어보니 private 필드엔 Access 할 수 없다고 나온다.
방법은 private 필드에도 접근할 수 있도록 설정해주면 되는데 코드1줄만 추가하면 된다
private 메소드가 존재할 경우 메소드에도 추가해주면 된다.추가하고 다시실행해보자

 

 

이제 어노테이션에 개발자가 직접 정의한 값을 넣고 다시한번 실행해보자

 

 

정상적으로 실행이 되었다

 

JAVA 및 Spring으로 개발을 해오면서 Reflection에 대해 정리를 해보았다.
이번에 정리한 내용을 머리에 다시한번 정리하면서 추후에 개발을 할때 요긴하게 써먹을 수 있을것 같다

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함