Study/Spring

[Spring] 스프링 어노테이션 기능 정리

e.den 2020. 7. 4. 00:19

(이것은 개인적으로 공부하기 위해 적어두는 어노테이션 기능들이다)

 

여기서 어노테이션들은 크게 세 가지로 분류해서 설명한다.

- Lombok 관련 어노테이션

- Spring 관련 어노테이션

- 테스트 관련 어노테이션

 

우선 Lombok 관련 어노테이션에는 @Setter, @Data가 있다.

Lombok에 대한 설명과 설치법은 https://withthemilkyway.tistory.com/15 이 곳에서 확인할 수 있다.

 

@Setter 어노테이션은 setter 메서드를 만들어주는 역할을 한다.

말 그대로 setter 메소드를 생성해 주는 것이다. @Setter에는 onMethod라는 속성을 부여해줄 수 있는데,

onMethod는 setter 메서드의 생성 시 메서드에 추가할 어노테이션을 지정한다.

 

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

@ToString, @EqualsAndHashCode, @Getter/@Setter, @RequiredArgsConstructor를 모두 결합한 형태로

한 번에 자주 사용되는 모든 메서드들을 생성할 수 있다.

 

다음은 Spring 관련 어노테이션이다.

Spring 관련 어노테이션에는 @Autowired@Component가 있다.

 

@Autowired는 스프링 내부에서 자신이 특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을 주입하라는 표시이다.

스프링은 @Autowired 어노테이션을 보고 스프링 내부에 빈(bean) 중에서 적당한 빈이 있는지 확인 후 자동으로 주입을 해준다.

만약, 필요한 객체가 존재하지 않는다면 제대로 객체를 구성할 수 없기 때문에 에러가 발생한다.

 

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

 

마지막으로 테스트 관련 어노테이션은 @ContextConfiguration, @RunWith, @Test가 있다.

 

테스트 관련해서 가장 중요한 어노테이션은 @ContextConfiguration이다.

@ContextConfiguration은 스프링이 실행되면서 어떤 설정 정보를 읽어 들여야 하는지를 명시한다.

속성으로는 locations를 이용해서 문자열의 배열로 XML 설정 파일을 명시할 수도 있고,

classes 속성으로 @Configuration이 적용된 클래스를 지정해 줄 수도 있다.

 

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

 

@Test는 junit에서 해당 메서드가 jUnit 상에서 단위 테스트의 대상인지 알려준다.