인프런 지식공유자 최태현 님의 자바 스프링부트 서버개발 올인원 강의 커리큘럼에 포함된 과제입니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인
최태현 | Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한
www.inflearn.com
[질문]
- 어노테이션을 사용하는 이유 (효과)는 무엇일까?
- 나만의 어노테이션은 어떻게 만들 수 있을까?
어노테이션을 사용하는 이유는 무엇일까
자바에서 Annotation(@)은 코드에 메타데이터를 추가하여 자동으로 프로그램의 동작을 지정하거나 변경하는 등의 기능을 한다.
예를 들어 override 메서드임을 명시적으로 선언하고 컴파일 시 오버라이딩 문법을 체크해주는 '@Override'라는 어노테이션은 다음과 같이 사용할 수 있다.
@Override
public void someMethod() {
// 메소드 구현
}
이러한 어노테이션을 사용하는 이유와 어노테이션 사용으로 얻을 수 있는 효과는 무엇일까?
- 런타임 처리 및 동작 지정 - 어노테이션을 사용하여 런타임 시에 동적으로 로드, 실행하고 검사하고 변경하는 등의 다양한 작업을 수행할 수 있다. 이는 프로그램이 더 다양한 환경과 변화에 대응할 수 있게 해준다.
- 코드 생성 및 자동화 - 어노테이션을 활용해 코드 작성 및 관리 과정을 자동화하여, 반복적이고 일상적인 작업을 줄이고 생산성을 향상시킬 수 있다.
- 코드 정리 및 정보제공 - 어노테이션의 주요한 장점은 간결함이다. 로직의 컨텍스트가 어노테이션에 응축되어 불필요한 반복 코드를 줄이며, 가독성을 높이고 코드에 대한 정보를 제공한다. 예를 들어 @Deprecated 어노테이션으로 사용하지 않는 메소드임을 나타낼 수 있다.
- 컴파일 시 검사 및 경고 - 어노테이션을 사용해 컴파일러가 코드를 분석하고 오류나 문제를 식별하게 할 수 있다.
- 커스텀 어노테이션 지정 - 개발자가 자신만의 어노테이션을 정의하고 사용하여 특정한 의미나 기능을 표현할 수 있다.
나만의 어노테이션은 어떻게 만들 수 있을까
자바에서는 내장 어노테이션뿐만 아니라 사용자가 직접 정의한 커스텀 어노테이션을 사용할 수 있다.
@interface 이름 {
type 요소이름();
}
아래는 '@CustomAnnotation ' 을 만드는 예시이다.
@Retention(RetentionPolicy.RUNTIME) // 런타임 시까지 어노테이션 사용
@Target(ElementType.METHOD) // 적용 대상을 Method로 설정
public @interface CustomAnnotation {
String name();
int value() default 10; //default 값 10으로 설정
}
필요하다면 메타 어노테이션을 추가하여 어노테이션에 정보를 제공하고 동작 방식을 지정할 수 있다.
@Target - 어노테이션이 적용될 수 있는 대상을 지정 e.g. ' @Target(ElementType.METHOD)'은 메소드에만 적용 가능
@ Retention - 어떤 시점까지 어노테이션을 유지할 것인지 지정 'SOURCE', 'CLASS', 'RUNTIME'의 옵션이 있다.
@Documented - javadoc으로 작성된 자바 문서에 어노테이션 정보 포함
@Inherited - 클래스 상속 시 어노테이션 상속
@Repeatable - 같은 어노테이션을 반복적으로 사용 가능
'인프런 워밍업 클럽 1기 - 백엔드' 카테고리의 다른 글
| 6일차 과제 - Controller - Service - Repository 계층 분리 (0) | 2024.05.13 |
|---|---|
| 5일차 과제 - 클린코드 (0) | 2024.05.09 |
| 4일차 과제 - API 만들기 2 (0) | 2024.05.07 |
| 3일차 과제 - 람다식에 대해 (0) | 2024.05.03 |
| 2일차 과제 - api 만들기 (0) | 2024.05.01 |