Module 13 Annotation
시작문제 → 이터레이터 구현하기
이터레이터 Iterator
- 반복적으로 하나하나 꺼내어 처리 가능한 컬렉션이나 sequence 들
- 이터레이터는 next()함수를 구현한 객체로, next()함수는 순환 가능한 객체의 다음 원소를 반환
@Override : 오류를 잡기위한 방법(상속해서 사용 시, 상속하는 클래스의 이름을 틀리게 작성하는 경우↑), 컴파일할 때 적용되어야 함
어노테이션 Annotation : "주석"이라는 의미를 가지며, 자바에서는 @를 이용하여 주석처럼 달아 특수한 의미를 부여
:
소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소
: 하나의 대상에 여러 개의 어노테이션 존재 O
AOP Aspect-Oriented-Programming
: 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠서 그 관점을 기준으로 각각 모듈화 하겠다는 의미
: 하나의 코드를 여러가지 관점으로 디자인해서, 이를 관점에 맞춰서 지켜야 함
: 주요 개념
* Aspect - 흩어진 관심사를 묶어서 모듈화 한 것, Java에서 어노테이션으로 구체화 O + ) Advice와 Point cut
* Target - Aspect가 가지고 있는 Advice가 적용되는 대상 +) 패키지, 클래스, 인터페이스, 메소드, 지역 변수, 타입 파라미터 in java
* Advice - 어떤 일을 해야할 지에 대한 것으로, 해야 할 일에 대한 정보를 가짐
* Join Point - Advice가 적용될 위치, 끼어들 수 있는 지점, 생성자 호출 직전, 필드에 접근하기 전등의 메소드 실행 시점 의미
* Point cut - Join Point의 상세한 스펙을 정의, 어디에 적용해야 하는지에 대한 구체적인 정보를 가짐
선언부 Annotation
|
|
표준 Annotation
|
@Retention
: 일부 보존 정책과 함께 제공되는 메타 어노테이션
: 보존 정책은 어노테이션이 유지되는 기간, 즉 삭제 시점을 결정 EX>보존 정책 = SOURCE, CLASS, RUNTIME 3개 중 1개 지정
@Override, @SuppressWarning
: SOURCE 보존 정책
: 이런 종류의 어노테이션은 컴파일러 차원에서 유효
@FunctionalInterface
: 유지 정책이 RUNTIME으로, 실행시에도 사용
@Documented
: Annotation 정보가 javadoc으로 생성한 문서에 포함되도록 함
: 어노테이션에 대한 정보가 javadoc으로 작성한 문서에 포함
: @Documented 메타 어노테이션 - javadoc을 사용한 문서 생성시 생성된 문서에 정보가 포함
@Target
: 해당 사용자 정의 Annotation이 적용될 수 있는 대상을 지정
: 메소드, 생성자, 필드, 지역 변수 등 Annotation이 지정될 대상 지정
: 적용 대상은 ElementType에 정의됨
: 하나 이상의 대상을 지정 가능
@Inherited
: Annotation이 서브 클래스에 상속되도록 함
: @Inherited Annotation이 적용된 클래스의 서브 클래스는 Annotation을 명시하지 않아도 적용된 것과 같이 인식됨
: 클래스 정의에서만 사용됨
@Repeatable
: 반복되는 Annotation이 필요할 경우 사용
: 반복되는 Annotation을 위한 컨테이너 Annotation
***Annotation의 성능과 사용방법은 알고 있기***
at the singleton / at the CreationMode(type = "Java")
public class prodjct























'✎NHN Academy | JAVA' 카테고리의 다른 글
| NHN Academy - 2024.09.03(Tue) (0) | 2024.09.03 |
|---|---|
| NHN Academy - 2024.09.02(Mon) (0) | 2024.09.02 |
| NHN Academy - 2024.08.29(Thu) (0) | 2024.08.29 |
| NHN Academy - 2024.08.28(Wed) (1) | 2024.08.28 |
| NHN Academy - 2024.08.27(Tue) (0) | 2024.08.27 |