Annotation이란 무엇인가요?
애노테이션(
Annotation) 은 사전적 의미로는 주석을 뜻하며, 자바에서 애노테이션은 소스 코드에 추가해서 사용할 수 있는 메타 데이터의 일종이다.애노테이션은 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 한다.
애노테이션을 정의하고, 원하는 위치(클래스, 메서드, 파라미터 등)에 배치한 후, 코드가 실행되는 도중 자바 리플렉션을 이용해 추가 정보를 획득해 기능을 수행하는 방식으로 동작한다.
애노테이션이 나오기 전에는 XML이나
Serializable같은 마커 인터페이스를 통해 추가적인 정보를 제공할 수 있었다.
[애노테이션 장점]
가독성 : 클래스, 메서드 등 연관된 코드에 직접적으로 붙어있기 때문에 흐름을 따라가기 쉽다.
설정 간소화 : 별도의 설정 파일 없이 애노테이션 적용을 통해 설정을 간소화할 수 있다.
중복 코드 제거 : 설정을 재사용할 수 있기 때문에 코드의 중복을 줄일 수 있다.
[애노테이션 단점]
런타임 오버헤드 : 런타임 시점에 리플렉션을 사용하여 처리하는 애노테이션의 경우 성능상 오버헤드가 발생할 수 있다.
남용으로 인한 복잡성 : 지나치게 많은 애노테이션을 적용하면 오히려 코드를 이해하기 어려워질 수 있다.
스프링이 애노테이션 기반으로 만든 이유
XML을 통한 복잡한 설정은 코드의 복잡성을 올라가게 하고, 가독성을 떨어뜨리면서 유지보수를 어렵게 만드는 요인이 되었다.
반면 애노테이션을 기반 구성은 가독성, 유지보수, 간결함 등의 장점이 존재하기 때문에 스프링에서는 애노테이션 기반 구성을 지원한다.
XML도 여전히 지원은 하므로 프로젝트 요구사항에 맞게 선택하여 사용할 수 있다.
스프링 주요 애노테이션
@ComponentScan@Component,@Controller,@Service,@Repository,@Configuration이 붙은 클래스를 스프링 빈으로 등록한다.
@EnableAutoConfiguration스프링 부트의 자동 구성을 활성화하는 기능을 제공하는 애노테이션
@Componentvs@Bean둘 다 스프링 빈으로 등록하기 위한 애노테이션인데, 차이가 있다.
@Component: 개발자가 직접 생성한 클래스를 스프링 빈으로 등록할 때 사용한다.@Bean: 개발자가 직접 제어가 불가능한 외부 라이브러리를 스프링 빈으로 등록할 때 사용한다.
외에도
@Autowired,@SpringBootApplication@Request...,@Response...등 개발자의 편의를 위한 다양한 애노테이션을 제공한다.
참고
Last updated