티스토리 뷰
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를 만들어 제공하는게 아닌가 싶었다.
물론 뇌피셜이 끼어있기 때문에 맞는지는 모르겠지만 일단 깊게 파면 끝이 없으니 여기까지 하는걸로~
'읽고 쓰고 씹고 즐기고 > Spring-boot' 카테고리의 다른 글
내가 느낀 QueryDsl의 장단점과 후기 (0) | 2020.01.29 |
---|---|
Spring boot와 jsp 그리고 Mybatis와 Hibernate (1) | 2019.12.18 |
Oauth2를 이용한 google API 사용 과정 (0) | 2019.06.06 |
plugin과의 전쟁 (0) | 2019.03.17 |
빌드[build]란? (0) | 2019.03.13 |
- Total
- Today
- Yesterday
- Java
- body
- 일지
- Spring
- JavaScript
- homebrew
- 프로그래머스
- mapping
- 모듈
- Gradle
- 스터디 회고
- RequestHandler
- header
- JAR
- @Autowired
- springboot
- 개발
- 회고
- 인텔리J
- MySQL
- graphQL
- 개발일지
- Spring Boot
- 한 입 크기로 잘라먹는 리액트
- web
- 멀티모듈
- HTTP
- spring-boot
- Request Handler
- 자바스크립트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |