[Spring] CH15 리플렉션과 어노테이션 (책)

jaegeunsong97·2023년 3월 21일
0

[Fast Campus] Spring

목록 보기
24/44
post-thumbnail

https://github.com/codingspecialist/java-reflection.git

📕 리플렉션


자바의 리플렉션(Reflection)은 실행 중인 프로그램의 클래스, 메서드, 필드 등에 대한 정보를 얻거나 조작하는 기능을 제공하는 API입니다. 즉, 클래스의 정보를 분석하거나, 클래스의 인스턴스를 생성하거나, 메서드를 호출하거나, 필드의 값을 가져오거나, 설정하는 등의 작업을 할 수 있습니다.
리플렉션은 다음과 같은 상황에서 유용합니다.
1. 런타임 시에 동적으로 클래스를 로드해야 하는 경우
2. 클래스의 구조, 메서드, 필드 등에 대한 정보를 가져와서 분석해야 하는 경우
3. 클래스의 인스턴스를 생성하거나 메서드를 호출하거나 필드의 값을 변경해야 하는 경우

📕 어노테이션


자바의 어노테이션(Annotation)은 프로그램의 코드에 메타데이터를 추가하는 기능을 제공하는 것으로, 컴파일러나 런타임 시에 코드를 처리하는 도구들에게 추가적인 정보를 제공합니다.
어노테이션은 @어노테이션이름(속성1=값1, 속성2=값2, ...) 형태로 사용하며, 주로 클래스, 메서드, 변수, 매개변수 등에 부착하여 사용됩니다.
자바에서 제공하는 어노테이션은 크게 세 가지 유형으로 나눌 수 있습니다.

  1. 빌트인 어노테이션(Built-in Annotation)
    @Override: 상위 클래스나 인터페이스의 메서드를 오버라이드함을 나타냅니다.
    @Deprecated: 해당 요소(클래스, 메서드, 필드 등)가 더 이상 사용되지 않음을 나타냅니다.
    @SuppressWarnings: 컴파일러의 경고를 무시하도록 지정합니다.
  1. 메타 어노테이션(Meta Annotation)
    @Retention: 어노테이션의 유지 정책을 지정합니다. (소스, 클래스, 런타임)
    @Target: 어노테이션을 부착할 수 있는 대상(클래스, 메서드, 필드 등)을 지정합니다.
    @Documented: 해당 어노테이션을 javadoc으로 문서화할 것인지를 나타냅니다.
    @Inherited: 해당 어노테이션을 상속 가능하도록 지정합니다.
  1. 커스텀 어노테이션(Custom Annotation)
    개발자가 직접 정의한 어노테이션으로, 애플리케이션에 맞는 사용자 정의 어노테이션을 만들 수있습니다.
    어노테이션은 주로 코드의 가독성을 높이고, 자동화된 코드 생성, 테스트, 디버깅 등에 활용됩니다.

📕 리플렉션과 어노테이션 실습


ex01은 리플렉션을 사용하지 않는다. 그렇기 때문에 App.java를 팔 수 없다

ex02은 리플렉션을 사용하여 uri를 분석한다. 하지만, 컴퍼넌트 스캔을 하지 않기 때문에 팔 수 없다.

ex03은 리플렉션을 사용하여 URI를 분석하고, 컴퍼넌트 스캔을 통하여 객체를 생성한다. 팔 수 있따

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글