[Spring] 어노테이션 정리

msriver·2020년 6월 18일
0

Spring

목록 보기
4/16

책을 읽고 나오는 어노테이션들을 차차 정리하여 나만의 사전을 만들어 볼 것이다.

Lombok 관련 어노테이션

Lombok은 컴파일 시 코드를 자동으로 작성하는 기능을 해주는 라이브러리 이다. 그냥 setter/getter 등을 만들어 주어 일반적인 클래스를 자바 빈 클래스로 만들어주는 라이브러리.

  • @Setter : setter메서드를 만들어주는 역할을 한다.
    - @Setter의 3가지 속성

    • value : 접근 제한 속성, 기본값 = lombok.AccessLevel.PUBLIC
    • onMethod : setter 메서드에 추가할 어노테이션을 지정한다. 현재 @Autowired 어노테이션을 사용해봤다. 특이점은 코드에 언더스코어( _ )가 사용된다는 것. JDK 버전에 따라 차이가 있지만 현재 많이 사용되는 Java 8 이상부터는 다음과 같이 사용한다.

      @Setter(onMethod_={@AnnotationsGohere})

    • onParam : setter메서드의 파라미터에 어노테이션을 사용하는 경우에 적용.

  • @Data : @ToString , @EqualsAndHashCode, @Getter/@Setter, @RequiredArgsConstructor 등의 어노테이션을 모두 합쳐놓은 어노테이션.
    즉 자주사용되는 메서드들을 한번에 생성 가능하다. 만일 세부적인 설정이 필요 없다면 주로 이용하게 될것이라 한다.


  • @Log4j : 로그 객체를 생성한다. 책에서 log.info 등을 사용하기 위해 필요한 어노테이션. 필수는 아님
    이 어노테이션이 붙어있다면 컴파일 시 내부적으로 로그객체가 생성된다. 자매품 @Log


Spring 관련 어노테이션

  • @Component : 해당 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시해주는 것이다. 이게 적혀진 클래스들은 root-context.xml에서 context:component-scan으로 패키지를 지정해 스프링이 인지하게 된다.
    즉 해당 패키지에 @Component 어노테이션이 붙은 클래스들을 객체로 생성하여 빈으로 관리하는 것.

  • @Autowired : 나는 개인이오! 나는 특정한 객체에 의존적이므로 나에게 해당 타입의 빈을 주입해주시오! 라는 표시이다.
    스프링은 이 어노테이션을 보고 스프링이 관리하는 객체(빈)들 중에서 적당한 것이 있다면 자동으로 주입해준다.
    만약 @Component가 없어 빈으로 등록되지 않는 객체들은 스프링이 관리할 수 없으므로 에러가 뜨게 될 것이다.

테스트 관련 어노테이션

  • @ContextConfiguration : 스프링이 실행되면서 어떤 설정 정보를 읽어 들여야 할지 명시해주는 것.
    속성은 locations로 문자열을 이용해 XML설정 파일을 명시할 수도 있고, classes속성으로 @Configuration이 적용된 클래스를 지정해 줄 수도 있다.

  • @RunWith : 테스트 시 필요한 클래스를 지정한다. 스프링에서는 SpringJUnit4ClassRunner 클래스가 대상이 된다.

  • @Test : junit에게 해당 메서드가 'jUnit 상에서 단위 테스트의 대상이다!' 라고 알려주는 것이다.

profile
NOBODY

0개의 댓글