진도표 1일차와 연결됩니다
우리는 최초로 API를 만들어 보았습니다. GET API를 만들기 위해 사용했던 어노테이션에 익숙하지 않다면 자바 어노테이션에 대해서 몇 가지 블로그 글을 찾아보세요! 다음 질문을 생각하며 공부해보면 좋습니다! 😊
[질문]
어노테이션을 사용하는 이유 (효과) 는 무엇일까?
- 어노테이션이란?
어노테이션의 구현된 정보에 따라 연결되는 방향이 결정된다. 따라서 비즈니스 로직에는 영향을 주진 않지만 해당 타겟의 연결 방법이나 소스코드의 구조를 변경할 수 있다. - 어노테이션의 용도?
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공 (@Test)
- 안정성 증가
- 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공
- 불필요한 코드 반복을 줄여, 비즈니스 로직에 더 집중
- 실행시 특정 기능을 실행하도록 정보를 제공한다.
- 어노테이션이 지정된 대상에 대해 특정 작업을 수행시킴
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공 (@Test)
- 어노테이션에는 무엇이?
- 내장 어노테이션
- @Override : 컴파일러에게 오버라이딩 하는것이라고 알림
- @Depricated : 앞으로 사용하지 않을 대상이란것을 알림
- @FunctionalInterface : 함수형 인터페이스라는것을 알림
- @SupperssWarning : 컴파일러가 경고 메세지를 나타내지 않는다.
- @sageVarars : 제네릭과 같은 가변인자의 매개변수를 사용할 때의 경고를 나타내지 않는다.
- 메타 어노테이션 ( 어노테이션을 정의하는데 사용 , 주로 커스텀 어노테이션에 적용 )
- @Retention : 어노테이션이 유지되는 범위을 정하기 위해 사용
- RetentionPolicy.SOURCE: 컴파일 전까지만 유효하며 컴파일 이후에는 사라짐
- RetentionPolicy.CLASS: 컴파일러가 클래스를 참조할 때까지 유효함
- RetentionPolicy.RUNTIME: Reflection을 사용하여 컴파일 이후에도 JVM에 의해 계속 참조가 가능함
- @Repeatable : 어노테이션을 반복해 적용할 수 있도록 한다.
- @Inherited : 어노테이션이 하위 클래스에 상속되도록 한다.
- @Target : 적용대상을 지정하는데 사용
- ElementType.PACKAGE : 패키지 선언시
- ElementType.TYPE : 타입 선언시
- ElementType.CONSTRUCTOR : 생성자 선언시
- ElementType.FIELD : 맴버 변수 선언시
- ElementType.METHOD : 메소드 선언시
- ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언시
- ElementType.LOCAL_VARIABLE : 지역 변수 선언시
- ElementType.TYPE_PARAMETER : 매개 변수 타입 선언시
- @Documented : javadoc으로 작성된 문서에 포함시킨다.
- @Retention : 어노테이션이 유지되는 범위을 정하기 위해 사용
- 사용자 정의 어노테이션
- 사용자가 직접 정의해 사용하는 어노테이션
- 내장 어노테이션
- 나만의 어노테이션은 어떻게 만들 수 있을까?
1. 어노테이션 생성
어노테이션은 다음과 같이 인터페이스 앞에 @를 붙여 생성할 수 있다.
public @interface RestControllerWithSwagger{
}
2. 메타 어노테이션 추가
앞서 다룬 어노테이션에 적용되기 위한 메타 어노테이션중 필요한것을 적용시키면 된다.
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Target(ElementType.TYPE)
public @interface RestControllerWithSwagger {
}
@Retention(RetentionPolicy.RUNTIME) : 컴파일 이후에도 JVM에 의해 계속 참조가 가능하다
@Inherited : 하위 클래스에도 적용가능
@Documented : javadoc 에 의해 문서화가 된다.
@Target(ElementType.TYPE) : 타입 선언시 어노테이션을 사용할 수 있다.
3. 이외 다른 어노테이션 추가 및 변수 추가.
@Api
@RestController
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Target(ElementType.TYPE)
public @interface RestControllerWithSwagger {
String name() default "RestController";
String value();
}
변수를 설정해 주면 어노테이션은 그저 값을 가지고 있을 뿐이다.
'Spring' 카테고리의 다른 글
Spring MVC -김영한 백엔드 (1) (0) | 2024.04.22 |
---|---|
인프런 워밍업클럽 4일차 과제 (0) | 2024.02.22 |
인프런 워밍업클럽 3일차 과제 (0) | 2024.02.22 |
인프런 워밍업클럽 2일차 과제 (0) | 2024.02.21 |
인프런 워밍업 클럽 - 스터디 0기 BE (0) | 2024.02.19 |
진도표 1일차와 연결됩니다
우리는 최초로 API를 만들어 보았습니다. GET API를 만들기 위해 사용했던 어노테이션에 익숙하지 않다면 자바 어노테이션에 대해서 몇 가지 블로그 글을 찾아보세요! 다음 질문을 생각하며 공부해보면 좋습니다! 😊
[질문]
어노테이션을 사용하는 이유 (효과) 는 무엇일까?
- 어노테이션이란?
어노테이션의 구현된 정보에 따라 연결되는 방향이 결정된다. 따라서 비즈니스 로직에는 영향을 주진 않지만 해당 타겟의 연결 방법이나 소스코드의 구조를 변경할 수 있다. - 어노테이션의 용도?
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공 (@Test)
- 안정성 증가
- 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공
- 불필요한 코드 반복을 줄여, 비즈니스 로직에 더 집중
- 실행시 특정 기능을 실행하도록 정보를 제공한다.
- 어노테이션이 지정된 대상에 대해 특정 작업을 수행시킴
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공 (@Test)
- 어노테이션에는 무엇이?
- 내장 어노테이션
- @Override : 컴파일러에게 오버라이딩 하는것이라고 알림
- @Depricated : 앞으로 사용하지 않을 대상이란것을 알림
- @FunctionalInterface : 함수형 인터페이스라는것을 알림
- @SupperssWarning : 컴파일러가 경고 메세지를 나타내지 않는다.
- @sageVarars : 제네릭과 같은 가변인자의 매개변수를 사용할 때의 경고를 나타내지 않는다.
- 메타 어노테이션 ( 어노테이션을 정의하는데 사용 , 주로 커스텀 어노테이션에 적용 )
- @Retention : 어노테이션이 유지되는 범위을 정하기 위해 사용
- RetentionPolicy.SOURCE: 컴파일 전까지만 유효하며 컴파일 이후에는 사라짐
- RetentionPolicy.CLASS: 컴파일러가 클래스를 참조할 때까지 유효함
- RetentionPolicy.RUNTIME: Reflection을 사용하여 컴파일 이후에도 JVM에 의해 계속 참조가 가능함
- @Repeatable : 어노테이션을 반복해 적용할 수 있도록 한다.
- @Inherited : 어노테이션이 하위 클래스에 상속되도록 한다.
- @Target : 적용대상을 지정하는데 사용
- ElementType.PACKAGE : 패키지 선언시
- ElementType.TYPE : 타입 선언시
- ElementType.CONSTRUCTOR : 생성자 선언시
- ElementType.FIELD : 맴버 변수 선언시
- ElementType.METHOD : 메소드 선언시
- ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언시
- ElementType.LOCAL_VARIABLE : 지역 변수 선언시
- ElementType.TYPE_PARAMETER : 매개 변수 타입 선언시
- @Documented : javadoc으로 작성된 문서에 포함시킨다.
- @Retention : 어노테이션이 유지되는 범위을 정하기 위해 사용
- 사용자 정의 어노테이션
- 사용자가 직접 정의해 사용하는 어노테이션
- 내장 어노테이션
- 나만의 어노테이션은 어떻게 만들 수 있을까?
1. 어노테이션 생성
어노테이션은 다음과 같이 인터페이스 앞에 @를 붙여 생성할 수 있다.
public @interface RestControllerWithSwagger{
}
2. 메타 어노테이션 추가
앞서 다룬 어노테이션에 적용되기 위한 메타 어노테이션중 필요한것을 적용시키면 된다.
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Target(ElementType.TYPE)
public @interface RestControllerWithSwagger {
}
@Retention(RetentionPolicy.RUNTIME) : 컴파일 이후에도 JVM에 의해 계속 참조가 가능하다
@Inherited : 하위 클래스에도 적용가능
@Documented : javadoc 에 의해 문서화가 된다.
@Target(ElementType.TYPE) : 타입 선언시 어노테이션을 사용할 수 있다.
3. 이외 다른 어노테이션 추가 및 변수 추가.
@Api
@RestController
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Target(ElementType.TYPE)
public @interface RestControllerWithSwagger {
String name() default "RestController";
String value();
}
변수를 설정해 주면 어노테이션은 그저 값을 가지고 있을 뿐이다.
'Spring' 카테고리의 다른 글
Spring MVC -김영한 백엔드 (1) (0) | 2024.04.22 |
---|---|
인프런 워밍업클럽 4일차 과제 (0) | 2024.02.22 |
인프런 워밍업클럽 3일차 과제 (0) | 2024.02.22 |
인프런 워밍업클럽 2일차 과제 (0) | 2024.02.21 |
인프런 워밍업 클럽 - 스터디 0기 BE (0) | 2024.02.19 |