강좌/Spring 3.0

005. 스프링을 통한 의존성 주입 - @Resource 를 통한 속성 주입

여름나라겨울이야기 2012. 12. 7. 17:56
728x90

의사 코드

 

운전자가 종합 쇼핑몰에서 자동차를 구매 요청한다.
종합 쇼핑몰은 자동차를 생산한다.
종합 쇼핑몰은 타이어를 생산한다.
종합 쇼핑몰은 자동차에 타이어를 장착한다.
종합 쇼핑몰은 운전자에게 자동차를 전달한다.

 

흠흠 의사 코드를 보죠.  이전 강좌와 동일합니다.
(기시감이랄까.. 데자뷰랄까.. 뭐 그런게 느껴지시나요? 뭐 그럴 수도 있죠 ^^;)

지난 번 강좌에서는 @Autowired 를 통한 속성을 주입했었는데요.
자동으로 묶어준다는 의미 보다 더 직관적인 말은 없을까요?
자동차에게 있어 타이어는 재료(?) 또는 자원(?), 부품이라고 할 수 있겠네요.
그리하여 이제부터는 Autowired 라는 표현 대신 Resource 라는 표현을 쓰도록 하겠습니다.
따라서 변경되는 부분은 @Autowired 부분뿐입니다.

 

package expert005;

import javax.annotation.Resource;

public class Car {
 @Resource
 Tire tire;

 public String getTireBrand() {
  return "장착된 타이어: " + tire.getBrand();
 }
}

 

나머지 소스는 역시 package 가 expert005 로 변경되었을 뿐 동일합니다.

 

그럼 @Autowired 하면 될 것을 왜 굳이 @Resource 로 변경하였느냐라고 물으신다면 조금 더 구체화 시킨다고 답을 드릴 수 밖에 없겠네요.

 

사실 @Resouce 말고도 @Autowired 할 수 있는 구체적인 것들이 있는데요.  차차 살펴보도록 하겠습니다.

 

그리고 혹시나 제 강좌 보시는 분 계신가요?
흠흠 댓글도 없고 반응도 없고... 그래서 강좌 접을라구요.
그냥 비공개로 제가 이해할 수 있는 수준 정도의 짧은 글로만 정리할까 합니다.
불특정 다수의 분들을 위해 쓰다보니 글 작성 시간이 너무 오래 걸리고 그래서 제 자신의 진도가 안 나가네요.  응원글이라도 있으면 뭐 힘 내서 해보겠지만..

어차피 일기처럼 혼자 볼 거라면...

 

이번 강좌 소스는 지난 강좌에 있는 소스를 다운 받으시면 됩니다.

 

그럼 마라나타...

 

사실을 말씀드리자면

@Autowired 는 Spring 만의 애너테이션입니다

@Resource 는 java 의 표준 애너테이션입니다.

고로 실전에서는 별반 차이가 없습니다.

차이점을 이해하려고 깊이 들어가봐야 실전에서 도움이 안 될 듯 합니다.


SpringFramework 를 사용하지 않는다면 @Resource 만을 사용하셔야겠죠.

 

더 살펴보시면

Srpingframework 에서 @Autowired 와 @Qualifer 의 조합된 사용,

그리고 java 애너테이션 표준인 JSR-250 / JSR-330 을 만나실 수 있습니다.

 

저한테 묻지 마세요. 저도 몰라요.. ^^;


P.S 토비님 책 10장의 10.2.3 빈 의존관계 설정 방법에 다 나옵니다.

토비님이 학습 테스트 늘 강조하시는데, 토비님 책 자체도 학습 테스트 하시면서 토비님 책 오류 찾아내기 게임에 도전해 보시는 건 ^^;


반응형