본문 바로가기

Education/인프런 워밍업 클럽(BE 0기)

인프런 워밍업 클럽 - BE 0기, 과제 #1

목차

    과제

    [질문]

    • 어노테이션을 사용하는 이유(효과)는 무엇일까?
    • 나만의 어노테이션은 어떻게 만들 수 있을까?

     

    1. 어노테이션을 사용하는 이유(효과)는 무엇일까?

    1.1 어노테이션이란

    어노테이션은 자바 프로그래밍 언어의 기능 중 하나로 클래스, 메서드, 변수 등의 요소에 메타데이터를 추가하기 위해 사용된다.

    스프링 프레임워크에는 스프링에서만 사용되는 어노테이션을 제공한다. 어노테이션을 이용해 스프링 애플리케이션의 구성, 관리, 동작을 제어해서 트랜잭션 관리, AOP, 테스트 지원 등 다양한 기능을 구현할 수 있도록 한다.

    1.2 어노테이션을 사용하는 이유

    어노테이션을 이용하면 애플리케이션 개발 시 보다 쉽게 구성할 수 있게 된다.

    스프링이 제공하는 주요 어노테이션 중 몇 가지를 살펴보면 다음과 같다.

    • @Controller, @Repository, @Service 어노테이션을 사용하면 클래스의 역할을 명확히 알려줄 뿐만 아니라, 스프링의 빈으로 등록되기 때문에 스프링 프레임워크의 다양한 기능을 활용하여 개발 생산성을 향상시킬 수 있다.
    • @Autowired를 사용하면 스프링 컨테이너가 자동으로 빈을 주입하도록 지시할 수 있어서 의존성 주입을 쉽게 설정할 수 있다.
    • @RequestParam을 사용하면 웹 요청 파라미터의 값을 쉽게 추출할 수 있다. HttpServletRequest를 직접 다루지 않고 @RequestParam 어노테이션을 통해 HTTP 요청의 쿼리 파라미터나 폼 데이터를 추출할 수 있기 때문에 코드가 훨씬 간결해진다.

    2. 나만의 어노테이션은 어떻게 만들 수 있을까?

    프로젝트 개발 시, 스프링에서 제공하는 어노테이션 외 별도의 어노테이션을 직접 만들어서 사용해야 할 상황이 생길 수 있다.

     

    2.1 어노테이션 생성 방법

    어노테이션을 생성할 때 우선 클래스를 만들고, class 예약어를 @interface로 수정해 주면 된다.

    인텔리제이에서는 클래스 생성 시 'Annotaion'을 선택할 수 있다.

    class 생성
    annotaion생성

    어노테이션을 만든 후, 해당 어노테이션이 동작할 기능과 관련된 어노테이션들을 붙여주면 나만의 어노테이션을 만들 수 있다.

     

    예시로 @Controller 어노테이션에서 사용되는 어노테이션들을 붙여보았다.

    • @Target(ElementType.TYPE): 어노테이션이 적용될 대상을 지정한다. ElementType.TYPE은 해당 어노테이션이 클래스, 인터페이스, 열거형 등의 타입에 적용됨을 나타낸다.
    • @Retention(RetentionPolicy.RUNTIME): 어노테이션이 유지되는 기간을 지정한다. RetentionPolicy.RUNTIME은 런타임까지 어노테이션 정보를 유지함을 나타낸다.
    • @Documented: 해당 어노테이션을 자동으로 문서화할 것인지를 지정한다.