| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- Hexagonal
- 실무
- transactional
- Transaction
- JPA
- JDBC
- Layered Architecture
- Adapter
- simplejpaRepository
- Spring
- springboot
- Spring Data JPA
- hexagonal architecture
Archives
- Today
- Total
Ezcho
[java] 어노테이션 본문
어노테이션
-Java5 부터 추가됨
-클래스나 메소드 위에 붙혀서 사용한다(@Override)
-@ 는 at 이라는 뜻이다.
-소스코드에 메타코드(추가 정보) 를 주는 역할을 한다.
자바가 기본으로 제공하는 어노테이션과 사용자가 직접 작성하는 어노테이션이 존재한다 이때 후자를 커스텀 어노테이션이라고 부른다.
커스텀어노테이션: 사용자가 직접 작성할 수 있는 어노테이션
커스텀 어노테이션의 사용법
- 어노테이션을 정의한다.
- 어노테이션을 클래스에서 사용한다. (타겟에 적용)
- 어노테이션을 이용하여 실행.
1. 어노테이션의 정의
Cout100 어노테이션의 정의
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface Count100 {
}
2. 어노테이션의 사용
hello 를 출력하는 Myhello 클래스를 작성, Count100어노테이션을 붙힌다.
public class MyHello {
@Count100
public void hello(){
System.out.println("hello");
}
}
3. 메인함수에서의 사용
import java.lang.reflect.Method;
public class MyHelloExam {
public static void main(String[] args) {
MyHello hello = new MyHello();
try{
Method method = hello.getClass().getDeclaredMethod("hello");
//메서드 정보 알아보기, getClass(오브젝트메서드, 클래스의 정보 리턴)
//예외처리 필요, try catch 로 묶어주기 이후 catch(Exception e)
if(method.isAnnotationPresent(Count100.class)){
//메서드(count100이라는 annotation)를 적용을 하고있는가? 판단
for(int i = 0; i < 100; i++){
hello.hello(); //참이면 hello 를 100번 출력
}
}else{
hello.hello(); //거짓일 경우 hello를 한번 출력
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
위 코드에서는 어노테이션을 적용하는 방법에 대해서만 보여주고 있다.
어노테이션의 역할
1. 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
2. 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
3. 실행시(런타임시)특정 기능을 실행하도록 정보를 제공
내장 어노테이션의 종류
@Override : 해당 메서드가 오버라이드 됨
에러: 컴파일 에러
@Deprecated: 해당 메서드가 더 이상 사용되지 않음
에러: 컴파일 에러
@SuppressWarnings: 선언한 곳의 컴파일 경고를 무시
@SafeVarargs: 제너릭 같은 가변인자의 매개변수를 사용할 때의 경고를 무시
@FunctionalInterface: 함수형 인터페이스를 지정하는 어노테이션입니다.
에러: 메서드가 존재하지 않을경우 or 메서드가 하나이상 존재할 경우 컴파일 에러
'Java' 카테고리의 다른 글
| [Java] Thread (0) | 2022.11.25 |
|---|---|
| [java] java IO - Byte단위 입출력 (0) | 2022.11.16 |
| [java] Date, Calendar클래스, Time 패키지 (0) | 2022.11.09 |
| [java] java.util패키지 (0) | 2022.11.02 |
| [java] Math Class (0) | 2022.10.12 |
Comments