자바 애노테이션으로 빈을 구성하는 것이 XML 로 구성하는 것보다 나은 이유
구성정보와 코드가 함께 있다 (Colocation of configuration and code)
- 빈 구성정보가 직관적으로 자바 코드 내부에 있게 된다.
- 클래스가 어떻게 사용되는지 더이상 알아볼 필요 없이 직관적인 이해가 가능해진다.
- XML 구성정보 파일과 자바 파일을 왔다갔다 하는 비용을 줄여준다.
- 유지보수 하기 쉬운 코드가 된다.
보일러 플레이트 코드를 줄인다 (Reduce boilerplate)
- 빈을 함께 묶기 위한 보일러 플레이트 코드를 줄인다.
- XML 에서 빈과 해당 종속성을 명시적으로 정의할 필요 없이 애노테이션을 통해 자바코드에서 직접 이런 관계를 선언할 수 있다.
- 구성 정보를 작성하는 것이 보다 간결해진다.
컴파일 타임 체크 (Compile-time checks)
- 자바 컴파일러가 컴파일 중에 빈 구성정보에 오류가 발생한 것을 알 수 있게 된다.
- XML 구성정보를 이용하면 런타임에만 오류가 드러나기 때문에 불가능하다.
- 컴파일 타임 검사는 잠재적 구성 오류를 보기에 발견하고 예방하는데 도움이 된다.
리팩토링 지원 (Refactoring support)
- 자바 코드를 사용하는 만큼 모던 IDE 에서는 더 나은 리팩토링 지원을 받을 수 있다.
- 클래스나 메서드 이름 등을 바꿀 때 유용하다.
- XML 에서는 무언가 리팩토링할 때 일일이 바꿔주어야 하는 것을 생각하면 유용하다.
더 나은 가독성 (Improved readability)
- 애노테이션이 빈과 의존성 사이의 관계를 이해하는데 도움을 준다.
- 이는 코드 유지보수와 가독성에 도움이 된다.
그렇다면 XML 로 빈을 구성하는 방식의 장점은?
관심사의 분리가 잘 된다.
- 비즈니스 로직과 같은 자바 코드와 분리된 공간에 위치해 관심사의 분리가 잘 이루어진다.
- 빈 정의에 대한 보다 명시적인 제어가 가능하다.
결론
- 자바 애노테이션 방식으로 빈을 구성하면 그에 따른 많은 장점이 있지만 결국은 프로젝트에 알맞은 방법을 선택하는 것이 좋다.
- 둘을 섞는 경우도 흔하다.
반응형
'프레임워크 > 스프링 프레임워크' 카테고리의 다른 글
스프링의 preHandle() 메서드란? (언제 실행될까?) (0) | 2023.07.26 |
---|---|
스프링 RedisTemplate 이란? (0) | 2023.04.25 |
<context:annotation-config> 태그란? (스프링 빈 설정 xml) (0) | 2023.04.21 |
스프링 세션 (Spring Session) 이란 무엇이고 어떻게 작동할까? (0) | 2023.04.20 |
스프링 레디스 세션 사용법 (0) | 2023.04.19 |