✔️1주차 커리큘럼

DAY1은 OT를 진행하여 DAY2인 오늘부터 강의를 듣고 과제를 수행한다.
강의
서버 개발을 위한 환경 설정 및 네트워크 기초

스프링 프로젝트를 시작하는 방법과 서버를 만들기 전 네트워크 및 관련된 지식들에 대해 배울 수 있었다. 또한 API진입 지점인 Controller통해 GET API를 개발하는 것을 배우고 실습하였다.
과제
<과제 내용>
우리는 최초로 API를 만들어 보았습니다. GET API를 만들기 위해 사용했던 어노테이션에 익숙하지 않다면 자바 어노테이션에 대해서 몇 가지 블로그 글을 찾아보세요! 다음 질문을 생각하며 공부해보면 좋습니다! 😊
- 어노테이션을 사용하는 이유 (효과) 는 무엇일까?
- 나만의 어노테이션은 어떻게 만들 수 있을까?
📌Annotation알아보기
◾Annotation이란
어노테이션이란 java5버전에서 추가된 기능으로 사전적으로 '주석'이라는 의미를 가진다. 그러나 우리가 아는 흔히 사용하는 주석의 기능보다는 그 이상의 역할을 한다.
자바의 어노테이션은 소스코드에 추가해서 사용할 수 있는 메타데이터의 일종이다. 사용시 골벵이(@)를 이용하여 @Getter
와 같이 활용한다.
◾Annotation을 사용하는 이유
Annotation의 특징이자 사용하는 이유에 대해 알아보자.
- 코드 문서화와 가독성 향상: 코드의 의도나 사용 방법 등을 명시적으로 표현할 수 있어 코드의 가독성과 문서화가 향상된다.
- 코드 자동 생성: 프로그램을 빌드 시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
- 컴파일 타임 검사 및 경고: 어노테이션을 사용하면 컴파일러에게 문법 에러를 체크할 수 있도록 정보를 제공한다.
- 런타임 처리 및 동적 처리: 어노테이션은 리플렉션을 통해 런타임에 클래스나 메서드 등의 정보를 동적으로 분석할 수 있다.
어노테이션을 직접 사용해보니 가독성, 코드 자동 생성 이 2가지가 정말 큰 장점으로 다가왔다.
더보기 - Annotation 종류에 대한 단락은 아직은 모르는 것이 많은 것 같고 잘못된 정보로 전달될 수도 있다는 생각에 접어두었습니다 이 외에도 어노테이션 종류가 있을 수 있습니다. 잘 아시는 분이 계시다면 댓글 부탁드립니다🥹
◾Annotation 종류
Java의 어노테이션은 크게 3가지로 나뉜다. built-in(내장)어노테이션과 Meta(메타)어노테이션, Custom(커스텀) 어노테이션이 존재한다.
built-in어노테이션
- Java코드에 적용되는 어노테이션
- @Override, @Deprecated, @SuppressWarnings 등이 존재
예를 들어, @Override는 해당 메서드가 상위클래스에서 오버라이딩된 메서드임을 나타낸다.
meta 어노테이션
- 다른 어노테이션에 적용되기 위한 어노테이션
- @Retention, @Documented, @Target, @Ingerited, @Repeatable 등이 존재
예를 들어, @Target은 어노테이션이 적용될 수 있는 대상을 지정한다.
custom 어노테이션
- 사용자가 개발의 편의를 위해 정의하는 어노테이션
- 어노테이션은 특별한 종류의 어노테이션이며, 일반 인터페이스와 구분을 위해 @를 앞에 붙여 선언한다.
◾Annotation 만들기 (Custom 어노테이션)
1. 어노테이션 정의하기
@interface
를 이용하여 어노테이션을 생성한다.

2. 메타 어노테이션 추가하기
필요한 메타 어노테이션을 추가해준다. 또한 다른 필요한 어노테이션도 추가해준다.

* 메타 어노테이션 종류
@Retention:
어노테이션이 적용이 유지되는 범위
@Target:
어노테이션이 적용되는 대상
@Documented:
어노테이션 정보가 javadoc 문서에 포함되게 함
@Inherited:
어노테이션이 하위 클래스에 상속되도록 함
@Retention 옵션 (유지 범위)
RetentionPolicy.SOURCE: 소스 코드 수준에서만 유지되며, 컴파일 이후 제거됨
RetentionPolicy.CLASS: 클래스 파일에 기록되지만 런타임에는 사용되지 않음
RetentionPolicy.RUNTIME: 런타임까지 유지되며, 리플렉션을 통해 런타임에 어노테이션 정보를 읽을 수 있음
@Target 옵션(적용 대상)
ElementType.TYPE: 클래스, 인터페이스, 열거형
ElementType.METHOD: 메서드
ElementType.FILED: 필드
ElementType.CONSTRUCTOR: 생성자
ElementType.PACKAGE: 패키지
3. 어노테이션 기능을 할 코드 추가하기

4. 어노테이션 사용하기

MyClass에 붙인 어노테이션 정보를 다른 곳에서 활용할 수도 있다.

잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다❤️
좋은 하루 되세요😊
Reference
자바와 스프링 부트로 생애 최초 서버 만들기 [서버 개발 올인원 패키지] / 최태현 / 인프런 강의
https://velog.io/@eia51/Annotation-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5%EA%B8%B0
https://pamyferret.tistory.com/47
https://mangkyu.tistory.com/130
'activity > 인프런 워밍업 클럽' 카테고리의 다른 글
[인프런 워밍업 클럽 0기] 여섯 번째 과제 - API 역할 분리(Controller, Service, Repository) (0) | 2024.02.25 |
---|---|
[인프런 워밍업 클럽 0기] 다섯 번째 과제 - Clean Code(클린코드) (0) | 2024.02.23 |
[인프런 워밍업 클럽 0기] 네 번째 과제 - API 개발하기 (0) | 2024.02.22 |
[인프런 워밍업 클럽 0기] 세 번째 과제 - 익명클래스와 람다식 (0) | 2024.02.21 |
[인프런 워밍업 클럽 0기] 두 번째 과제 - API 만들기 (0) | 2024.02.20 |