어노테이션의 정의
어노테이션은 JDK5부터 새롭게 추가된 문법요소로, 사전적으로는 "주석"이라는 의미를 가지고 있다. 자바 코드에 @를 이용해 주석처럼 달아 특수한 의미를 부여하며, 프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공하고, 코드에 정보를 추가하는 정형화된 방법이다.
어노테이션의 사용 방법
어노테이션을 선언하기 위해서는 @interface 키워드를 사용한다. 필요한 매개변수를 선언하며, 이 매개변수는 어노테이션의 속성이 되며, 속성의 이름과 타입을 지정한다. 필요한 기본값 (default)을 속성에 설정할 수 있다 어노테이션을 사용할 때는 '@' 기호를 이용하여 어노테이션의 이름을 사용하고, 필요한 속성값을 설정한다.
자주 사용되는 어노테이션
자바와 스프링에서 자주 사용되는 어노테이션에는 다음과 같은 것들이 있다.
- @Override: 선언한 메서드가 오버라이드 되었다는 것을 나타낸다.
- @Deprecated: 해당 메서드가 더 이상 사용되지 않음을 표시한다.
- @SuppressWarnings: 선언한 곳의 컴파일 경고를 무시하도록 한다.
- @SafeVarargs: Java7 부터 지원하며, 제너릭 같은 가변인자의 매개변수를 사용할 때의 경고를 무시한다.
- @FunctionalInterface: Java8 부터 지원하며, 함수형 인터페이스를 지정하는 어노테이션입..
- @Component, @Service, @Repository, @Controller, @Configuration: 스프링에서 컴포넌트 스캔을 통해 해당 클래스를 스프링의 Bean으로 등록하도록 지정한다.
- @Autowired: 의존성 주입 (Dependency Injection)을 수행한다.
- @RequestMapping: 요청 URL과 메서드를 매핑한다.
- @PathVariable, @RequestParam: URL 경로에서 변수 값을 추출하여 메서드 파라미터에 바인딩한다.
- @ResponseBody: 메서드의 리턴 값을 HTTP 응답 본문으로 직접 반환하도록 지정한다.
어노테이션을 사용하는 이유 (효과) 는 무엇일까?
어노테이션 사용 이유 어노테이션은 프로그램에게 추가 정보를 제공하는 메타 데이터를 위해 사용된다. 주석과는 역할이 다르지만, 주석처럼 달아 특수한 의미 부여가 가능하며, 기능 주입이 가능하다. 어노테이션은 컴파일 시 사용하는 정보 전달, 빌드 툴이 코드를 자동으로 생성할 때 사용하는 정보 전달, 실행 시 특정 기능을 처리할 때 사용하는 정보 전달 등에 사용된다.
나만의 어노테이션은 어떻게 만들 수 있을까?
자바에서는 사용자 정의 어노테이션을 만드는 것이 가능하다.
- 어노테이션 선언: @interface 키워드를 사용하여 어노테이션을 선언한다.
public @interface MyAnnotation {
//...
}
2. 매개변수 선언: 필요한 매개변수를 선언한다. 이 매개변수는 어노테이션의 속성이 되며, 속성의 이름과 타입을 지정한다.
public @interface MyAnnotation {
String value();
}
3. 기본값 설정: 필요한 경우, 속성에 기본값 (default)을 설정할 수 있다.
public @interface MyAnnotation {
String value() default "default value";
}
4. 어노테이션 사용: 어노테이션을 사용할 때는 '@' 기호를 이용하여 어노테이션의 이름을 사용하고, 필요한 속성값을 설정한다.
@MyAnnotation(value = "custom value")
public class MyClass {
//...
}