Whiteship's Note

'JSR250'에 해당되는 글 1건

  1. 2008.09.08 @Resource 활용 팁 (6)

@Resource 활용 팁

모하니?/Coding : 2008.09.08 13:41


스프링에서 @Autowired와 @Resource. 이 둘의 가장 큰 차이는 하나는 by-type이고, 하나는 by-name이라는 것. 주로 @Autowired를 사용해서 보통 다음과 같이 코딩합니다.

public class Post {

   @Autowired private Cate cate;
   ...
}

그런데 만약에 Cate 타입이 두 종류라면.. MainCate, SubCate. 이렇게 나눴다고 치고 위의 코드를 실행하면 에러가 닙니다. NoSuchBean뭐시기 Exception이 나면서 해당 타입의 빈이 1개가 아니다. 라는 예외가 발생하요. 그럴 때 처방으로 보통..

public class Post {

  @Autowired @Qulifier("mainCate")
  private Cate maincate
  ...

}

이렇게 @Qulifier를 사용하곤 하는데.. 사실 저걸 @Resource로 바꾸면 굉장히 간단해집니다.

public class Post {

  @Resource private Cate maincate
  ...

}


캬~~ 간단하죠. @Resource 애노테이션을 사용하려면 jsr250-api.jar 파일을 추가해주면 됩니다. 메이븐을 사용하고 있다면

        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>jsr250-api</artifactId>
            <version>1.0</version>
        </dependency>

이렇게 추가해주면 끝..

'모하니? > Coding' 카테고리의 다른 글

DisplayTag 데코레이터 사용하기  (0) 2008.09.29
OSAF 검색 폼 태그 파일 완성  (0) 2008.09.25
Principle of least astonishment  (0) 2008.09.24
How to Design a Good API & Why it Matters  (0) 2008.09.24
delete 요청 처리 컨트롤러 코드 고민  (0) 2008.09.22
@Resource 활용 팁  (6) 2008.09.08
TDDBE - xUnit 23장  (0) 2008.09.01
TDDBE - xUnit 22장  (0) 2008.09.01
TDDBE - xUnit 21장  (0) 2008.09.01
TDDBE - xUnit 20장  (0) 2008.09.01
TDDBE - xUnit 19장  (2) 2008.09.01
top

  1. Favicon of http://kirigun.tistory.com BlogIcon 키리군 2008.09.09 17:56 PERM. MOD/DEL REPLY

    안녕하세요~

    질문이 있는데요.

    스프링 2.5에서 annotation을 이용해서 controller를 사용하려는데,

    @Controller
    public class NewsAction
    {
    @Autowiredprivate NewsDAO newsDAO;

    @Autowired 부분에서 No unique bean of type 이라고 하는 exception이 발생하는데

    도통 이유를 모르겠네요.. 혹시 이런 경험있으시면 조언 부탁드립니다.

    아..DAO는 sqlmap을 연동해서 구현되었습니다..

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.09.09 21:59 PERM MOD/DEL

    크핫. 그 에러가 바로 위에서 언급한 그 에러 입니다. 다음을 확인해보세요.

    1. NewsDAO 타입의 빈이 두 개 이상인지..
    2. NewsDAO를 혹시 빈으로 등록 안하진 않았는지..

    이 두 가지도 아니면 설정파일을 잘 보고, 컴포넌트 스캔을 사용하고 계시다면, 디폴트 패키지 위치를 어디로 했는지 확인해서 확실하게 NewsDAO가 빈 스캔너한테 걸리게 되어 있는건지 확인해보세요.

  2. Favicon of http://kirigun.tistory.com BlogIcon 키리군 2008.09.09 23:43 PERM. MOD/DEL REPLY

    설정파일에 컴포넌트 스캔을 사용합니다.

    xxx-servlet.xml 에는 com.ds.action 으로 정의해놓았구요(위에 질문한 action class들입니다)

    context.xml 쪽에는 com.ds.dao 패키지로 정의해두었습니다.

    servlet은 정상적으로 검색이 되는데 유독 멤버로 선언한 dao부분에서 에러가 나네요;;

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.09.10 08:40 PERM MOD/DEL

    스트럿츠 사용하시나요? 액션이란 용어를 쓰시는군요. :)
    흠.. 그럼 일단 @Qulifier나 @Resource로 해당 빈 이름을 줘서 by-name으로는 잘 가져오나 확인해보세요. 그래도 안 되면 빈 설정에 문제가 있거나, DAO가 필요로 하는 다른 빈을 만들지 못해서 그럴 수도 있으니까요.

    http://forum.ksug.org

    여기에 에러 로그랑 설정 파일 같이 올려주시면 좋겠습니다.

  3. Favicon of http://kirigun.tistory.com BlogIcon 키리군 2008.09.16 17:21 PERM. MOD/DEL REPLY

    포럼에 질문글 올렸습니다.

    급한맘에 되는 설정으로 잠시 돌리다가

    spring security쪽에서 또 삽질하고 있네요..ㅠㅠ

    정말 지푸라기라도 잡고 싶은 심정입니다.. 내일까진 설정완료해야 될텐데..쩝;;

    어렵네요..

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.09.16 22:08 PERM MOD/DEL

    네;; 전 오늘 어디 다녀오느라 이제 댓글을 봤습니다. 다른 분들이 도와주고 계시네요. :)

Write a comment.