[spring] Annotation(어노테이션)

Ha_ju·2021년 11월 7일

Spring

목록 보기
2/3

Annotation이란?

어노테이션 은 사전적 의미로는 주석 이라는 뜻

자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공해주는 meta data(데이터를 위한 데이터)라고 볼 수 있다.

Annotation을 적용할 때는 어디에 적용되며 언제까지 annotition 소스가 유지될 것인지를 설정하여야 하는데 소스코드에는 다음과 같이 annotation을 정의해 주면 된다.
@Target({ElementType.[적용대상]})
@Retention(RetentionPolicy.[정보유지되는 대상])

public @interface [어노테이션명]{
	public 타입 elementName() [default 값]
    ...
}

Annotation의 용도

- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
- SW개발툴이나 build 시 코드를 자동으로 생성할 수 있도록 정보를 제공
- 실행(run time) 시 특정 기능을 실행하도록 정보를 제공


Lombok 관련 어노테이션Spring 관련 어노테이션테스트 관련 어노테이션
@Setter@Autowired@RunWith
@Data@Component@ContextConfiguration
@Log4j@Test

Lombok 관련

컴파일 시 흔하게 코드를 작성하는 기능들을 완성해주는 라이브러리

1. @Setter 어노테이션
: setter 메서드를 생성해 주는 역할
: 3가지 속성을 부여해 줄 수 있다.

속성명의미
value접근 제한 속성을 의미한다.
기본값은 lombok.AccessLevel.PUBLIC
onMethodsetter 메서드의 생성 시 메서드에 추가할 어노테이션을 지정
코드는 특이하게도 ''표기가 사용되는데 JDK 버전에 따라 차이가 있다.
up to JDK7:
@Setter(onMethod=@
({@AnnotationsFoHere}))
from JDK8:
@Setter(onMethod_={@AnnotationsGohere}) //note the underscroe after onMethod.
onParamsetter 메서드의 파라미터에 어노테이션을 사용하는 경우에 적용


2. @Data
: Lombok에서 가장 자주 사용되는 어노테이션

@ToString, @EqualsAndHashCode, @Getter/@Setter, @RequiredArgsConstructor를 모두 결합한 형태로 한 번에 자주 사용되는 모든 메서드들을 생성할 수 있다는 장점이 있다.
만일 세부적인 설정이 필요없는 경우라면 @Data 를 주로 이용

3. @Log4j
: 로그 객체를 생성

@Log4j는 Log4j 설정을 이용하고, Log4j가 존재하지 않을 경우에는 @Log를 이용할 수 있다.

Spring 관련

1. @Component

해당 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시하는 어노테이션

2. @Autowired

스프링 내부에서 자신이 특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을 주입해주라는 표시
스프링은 @Autowired 어노테이션을 보고 스프링 내부에 관리되는 객체들 중에 적당한 것이 있는지를 확인하고 자동으로 주입해준다.
->필요한 객체가 존재하지 않는 다면 에러 발생!

테스트 관련 어노테이션

테스트 관련해서 가장 중요한 어노테이션 @ContextConfiguration
-> spring이 실행되면서 어떤 설정 정보를 읽어 들여야 하는지를 명시

속성으로는 locations를 이용해서 문자열의 배열로 XML 설정 파일을 명시할 수도 있고, classes 속성으로 @Configuration이 적용된 클래스를 지정해 줄 수도 있다.

@Runwith는 테스트 시 필요한 클래스를 지정
스프링은 SpringJUnit4ClassRunner 클래스가 대상이 된다.
@Test는 junit에서 해당 메서드가 jUnit상에서 단위 테스트의 대상인지 알려준다.

0개의 댓글