250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Lazy loading
- 나도코딩
- Wildcard
- HashMap
- 스프링 부트 3
- noncluster index
- 자율학습
- cluster index
- 혼공컴운
- Access Modifier
- 혼공
- 혼공학습단
- entrySet
- Interface
- 접근 제어자
- Functional Interfaces
- Spring Data JPA
- 0 시작
- 인터페이스
- 네트워크
- 접근제어자
- literal
- 혼공자바
- types
- java
- dotnet
- 인프런
- 티스토리챌린지
- 오블완
- Proxy Object
Archives
- Today
- Total
지금을 사는 사람
[Java] 애노테이션(Annotation) 본문
728x90
소개:
Java 언어의 강력한 특징 중 하나는 애너테이션(Annotation)입니다. 애너테이션은 코드에 메타데이터를 부여하여 컴파일러, 개발 도구, 런타임 환경 등에게 정보를 전달하는 강력한 도구로 활용됩니다. 이 블로그에서는 Java에서의 애너테이션에 대해 자세히 알아보겠습니다.
1. 애너테이션이란?
- 정의:
- 애너테이션은 Java 소스 코드에 메타데이터를 추가하는 특별한 형태의 주석입니다.
@
기호를 사용하여 표현되며, 컴파일러에게 정보를 전달하거나 런타임에 동작을 변경하는 등의 역할을 수행합니다.
2. 애너테이션의 사용 예시
// 간단한 애너테이션 사용
@Deprecated
public class OldCode {
// 클래스 내용...
}
@Deprecated
:- 해당 클래스 또는 메서드가 더 이상 권장되지 않는다는 표시를 남깁니다.
3. 내장 애너테이션
@Override
:- 메서드가 슈퍼클래스의 메서드를 오버라이드함을 명시합니다.
@SuppressWarnings
:- 특정 경고를 무시하도록 지시합니다.
4. 커스텀 애너테이션 생성
// 간단한 커스텀 애너테이션 정의
public @interface MyAnnotation {
String value() default "default value";
int count() default 0;
}
@interface
:- 애너테이션을 정의하기 위한 키워드입니다.
5. 리플렉션과의 결합
- 리플렉션(Reflection):
- 런타임에 클래스의 정보를 분석하고 조작하는 기능입니다.
- 애너테이션은 리플렉션과 함께 사용되어 런타임에 동적인 작업을 수행하는 데 유용합니다.
6. 프레임워크에서의 활용
- 스프링 프레임워크:
@Controller
,@Service
,@Autowired
등을 사용하여 컴포넌트를 식별하고 의존성 주입을 수행합니다.
- JPA (Java Persistence API):
- 엔터티 클래스에
@Entity
,@Table
,@Column
등을 사용하여 데이터베이스 매핑 정보를 제공합니다.
- 엔터티 클래스에
7. 애너테이션 프로세서
- 애너테이션 프로세서:
- 컴파일 시점에 애너테이션을 분석하고 처리하는 도구로, 코드 생성, 경고, 검증 등을 수행할 수 있습니다.
8. 결론
Java의 애너테이션은 코드에 메타데이터를 부여하여 컴파일러, 개발 도구, 프레임워크 등에게 유용한 정보를 제공하는 강력한 도구입니다. 그들은 리플렉션과 결합하여 런타임에 동적인 작업을 수행하는 데 활용되며, 프레임워크에서는 구조를 정의하고 확장 가능한 코드를 작성하는 데 중요한 역할을 합니다.
728x90
'Java' 카테고리의 다른 글
[Java] 접근제어자 Protected와 Default의 차이 (0) | 2023.12.22 |
---|---|
[Java] 접근 제어자(Access Modifiers) (1) | 2023.12.22 |
[Java] JVM (Java Virtual Machine) (0) | 2023.12.12 |
[Java] 컬렉션 (Collection) (1) | 2023.12.12 |
[Java] 리터럴 풀 (literal pool) (0) | 2023.12.12 |