어노테이션(Annotation)
주석 & 어노테이션주석은 사람에게 코드를 설명에 대한 정보를 전달하는 것이라면,어노테이션은 특정 코드를 사용하는 프로그램에게 정보를 전달한다.어노테이션(Annotation) 이란?어노테이션은 다른 프로그램에게 유용한 정보를 제공하기 위해 사용된다.자바 어노테이션은 클래스 파일에 임베드 → 컴파일러에 의해 생성 → JVM에 포함되어 동작한다. 어노테이션의 역할컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공한다.프로그램 빌드나 배치 시, 코드를 자동으로 생성할 수 있도록 정보를 제공한다.런타임에 특정 기능을 실행하도록 정보를 제공한다.어노테이션을 만들 때, 용도를 분명하게 해야 한다.소스 상에서만 유지해야 할지컴파일된 클래스에도 유지해야 할지런타임 시에도 유지해야 할지를 지정해야 한다.어노테이션은 @를 사용하여 작성하며, 해당 타겟에 대한 동작을 수행하는 프로그램 외에는다른 프로그램에게 영향을 주지 않는다. 어노테이션의 종류 표준 어노테이션 (Built-in Annotation)자바에서 기본적으로 제공하는 어노테이션@Override컴파일러에게 메서드를 오버라이딩 하는 것이라고 알린다.만약 부모 클래스 또는 구현해야 할 인터페이스에서 해당 메소드를 찾을 수 없다면 컴파일 오류가 난다.@Deprecated앞으로 사용하지 않을 대상임을 알린다.@FunctionalInterface함수형 인터페이스라는 것을 알린다.메소드가 없거나 2개 이상 되면 컴파일 오류가 난다. (Java 8 이상)@SuppressWarning컴파일러가 경고 메시지를 나타내지 않는다.@SafeVaragrs제네릭과 같은 가변 인자의 매개변수를 사용할 때의 경고를 나타내지 않는다. (Java 7 이상) 메타 어노테이션 (Meta Annotation)어노테이션에 붙이는 어노테이션으로, 어노테이션을 정의하는데 사용한다.@Target어노테이션을 정의할 때, 적용 대상을 지정하는데 사용한다.@Documented어노테이션 정보를 javadoc으로 작성된 문서에 포함시킨다.@Inherited어노테이션이 하위 클래스에 상속되도록 한다.@Repeatable어노테이션을 반복해서 적용할 수 있도록 한다. 사용자 정의 어노테이션 (Custom Annotation)사용자가 직접 정의하여 사용하는 어노테이션이다.커스텀 어노테이션을 만들려면 @interface [어노테이션 이름] 이라는 형태로 어노테이션을 정의해야 한다.어노테이션을 정의할 때, 생성되는 어노테이션에 대한 메타 어노테이션은 어노테이션 정의 앞쪽에 붙여준다. 강의에서 활용한 어노테이션@RestController현재 클래스를 Controller(API의 진입 지점)로 등록한다.메소드를 만들어서 API가 메소드를 사용하게 만들 수 있다. @GetMapping("/add")Get은 HTTP Method의 GET을 의미HTTP path가 /add인 API로 지정한다.* ("/add")은 API 명세를 정했던 GET /add를 의미 @RequestParam주어지는 쿼리를 함수 파라미터에 넣는다.Query를 통해 넘어온 데이터를 이 함수에 연결해 줄 때는 앞에 @RequestParam 이라고 적어주어야 한다.Referencehttps://nesoy.github.io/articles/2018-04/Java-Annotationhttps://hbase.tistory.com/169https://ittrue.tistory.com/156