java-squid/effective-java

[아이템 39] 명명 패턴보다 애너테이션을 사용하라

Closed this issue · 3 comments

[아이템 39] 명명 패턴보다 애너테이션을 사용하라
  • Java Annotation과 Reflection에 대해 나오네요
  • 굉장히 신기하면서도 재미있어 보이는 주제인 것 같아요.
  • 그런데 왜 reflection이라 명명했을까요?
  • 한번 얘기나눠보면 좋을 것 같네요

저도 이번주 아이템 중 가장 재밌네요. Juint의 어노테이션이 리플레션 기반으로 만들어졌다는 점이 흥미로웠습니다. 스프링도 의존성 주입할 때 리플랙션을 활용하는데, 우리가 유용하게 사용하는 기능들은 내부 속에 리플렉션이 자주 이용되는 것 같네요.

스프링에서 JpaRepository에선 Repository라는 이름을 확인하면 ComponentScan에서 애너테이션을 달지 않았어도 인식합니다. 그이전에는 스프링에서는 @Repository 를 달아야 스캔 대상으로 인식했으나 왜 스프링부트에서는 명명 패턴을 따르는 이유가 무엇일까요?

그냥 단순히 개발자가 애너테이션을 일일이 다는게 크게 유지보수하는데 도움이 안된다고 생각하여 Repository라는 이름을 붙이면 Scan대상에 해당되도록 설정한 걸까요?

https://stackoverflow.com/questions/42691697/using-repository-annotation-when-implementing-jparepostiory-in-spring