티스토리 뷰

project를 진행하면서 @Autowired와 @Resource, @Inject에 대해 알아보았다.

근데 아무리 생각해도 궁금증이 남아 머리에서 재생되며 튀어나오길래 이야기를 나눠봤다.

 

주제

@Autowired와 @Resource의 장단점과 왜 spring에서는 @Inject를 대신하는 @Autowired는 제공하는데

@Resource를 대신하는 어노테이션은 없는 것인가?



뭔가 장단점은 모르겠으나 정리해보자면

"@Resource가 @Autowired보다 먼저 나왔다는 것이고 @Resource가 좀 더 무결하다는 느낌이 든다."

"@Autowired spring bean에서 같은 type이 있으면 알아서 주입해주지만 동일 type이 두 개가 있으면

Qualifier로 지정해야 주입이 된다."

는 두 가지의 이야기가 나왔다.

잘 모르겠던 나는 다시 질문을 던졌고, 이번에는 어느 정도 원하는 이야기에 가까운 답을 들을 수 있었다.

"Autowired는 spring bean을 저장하는 녀석한테서 bean 목록 중 Autowired에 binding 할 수 있는 객체가 있으면

해주는 것이고, Resource는 그런 것 없이 name으로 지칭하니 그런 것 아닌가?

그리고 java spec는 글로벌 해야 하는데 spring 기반 기술을 사용할 수 없기 때문인 것 같다."

라는 내용이었다.


이렇게 이야기를 듣고 학원 동기와 토론 후 정리해보니

대충 느낌적인 느낌으로

@Resource는 name으로 의존성을 보존하니 굳이 spring에서 추가적인 어노테이션을 생성하지 않아도 괜찮지만

의존성을 좀 더 쉽게 관리하기 위해 @Autowired를 만들어 제공하는게 아닌가 싶었다.



물론 뇌피셜이 끼어있기 때문에 맞는지는 모르겠지만 일단 깊게 파면 끝이 없으니 여기까지 하는걸로~

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함