@WebService 어노테이션 에서 @Autowired 작동이 안되는현상

2,272 views
Skip to first unread message

Funtastic

unread,
Sep 25, 2014, 9:02:15 PM9/25/14
to ks...@googlegroups.com
안녕하세요.

불금에도 열심히 코딩하시는 여러분~


지금 Spring 3.x 버전에 Cxf 를 이용한 웹서비스를 구현하고있습니다.


Endpoint로 지정한 Class 에서 @Webservice Annotation을 지정하였고

로직의 처리를 위한 비즈니스 클래스를 주입하기위해 @Autowired 를 했는데.


주입이 안되는것 같습니다.


@WebService(
                      serviceName = "Request",
                      portName = "BasicHttpBinding_IRequest",
                      targetNamespace = "http://tempuri.org/",
                      endpointInterface = "com.biz.wsserver.tempuri.IRequest")
@Component
public class BasicHttpBinding_IRequestImpl implements IRequest {

       @Autowired
MainBizService mainBizService;

}



문제가 되는 부분은 윗부분이구요  시스템아웃으로 출력을 해보면 mainBizService 가 null 로 떨어집니다.



컨테이너 설정에는 Component-Scan , Annotation Config 설정이 되어있습니다.

조언 부탁드립니다.

감사합니다.

YongHyuk Lee

unread,
Sep 25, 2014, 10:42:30 PM9/25/14
to ks...@googlegroups.com
말그대로  mainBizService가 null 이면..
해당 클래스에 @Service 어노테이션이 붙어있는지 우선 확인을... 혹은 이름이 mainBizService 말고 다른이름으로 되어있다 랄지..

2014년 9월 26일 오전 10:02, Funtastic <upstyle...@gmail.com>님이 작성:

--
이 메일은 Google 그룹스 'Korea Spring User Group Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
http://groups.google.com/group/ksug에서 이 그룹을 방문하세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ksug/376b9b39-60e6-4135-8c0f-35560613ea8a%40googlegroups.com을(를) 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.



--
-----------------------------------------------

Funtastic

unread,
Sep 25, 2014, 11:45:46 PM9/25/14
to ks...@googlegroups.com
@Component 붙어있는데 @Service 로 하라는 말씀이신거죠?

한번해보겠습니다.


2014년 9월 26일 금요일 오전 11시 42분 30초 UTC+9, UnLogical 님의 말:

Funtastic

unread,
Sep 26, 2014, 3:29:10 AM9/26/14
to ks...@googlegroups.com
그래도 같은 현상입니다.

2014년 9월 26일 금요일 오후 12시 45분 46초 UTC+9, Funtastic 님의 말:

Jaeyong Kim

unread,
Sep 26, 2014, 4:58:32 AM9/26/14
to ks...@googlegroups.com
@Component, @Service 어떤 것으로 하던 스캔 대상입니다.

MainBizService 가 스캔이 안되거나 빈으로 등록이 잘 안되어있는 것으로 보이는데요...


applicationContext.getBean() 으로 한번 찍어보시고, 

안나오면 설정에 강제로 MainBizService 를 bean 으로 등록하고 한번 시도해 보시는게 좋을 것 같네요.
-> 요거를 시도해서 나온다면 scan 대상에 포함이 안되어서 그런것이니 패키지 스캔쪽 한번 더 확인을 해보시길 바랍니다.


아니면 다른쪽에서 쓰이는 bean 을 가져와서 찍어보면 어디가 잘못 되었는지 나올것 같긴합니다.







2014년 9월 26일 오후 4:29, Funtastic <upstyle...@gmail.com>님이 작성:

아치즈

unread,
Sep 26, 2014, 11:24:21 AM9/26/14
to ks...@googlegroups.com
답변 감사합니다. 알려주신정보대로 해보았습니다.

패키지 스캔 영역에 포함이 되어있구요.. 빈도 등록되어있어 웹서비스 앤드포인트로 지정된 곳말고 다른 영역에서는 정상적으로 빈주입이 되어있습니다.

2014년 9월 26일 오후 5:58, Jaeyong Kim <yoy...@gmail.com>님이 작성:

KwonNam Son

unread,
Sep 26, 2014, 7:33:15 PM9/26/14
to ks...@googlegroups.com
BasicHttpBinding_IRequestImpl 클래스의 객체를 두 번 이상 생성했는지 생성자에 브레이크 포인트나 로그를 찍고 확인해보세요.
그리고
BasicHttpBinding_IRequestImpl 클래스 생성자의 호출 스택을 확인해보세요. 어디선가 직접 new 하고 있지 않은지.

많은 개발자들이 Spring Bean 객체를 두번 이상 생성해서 올바르게 생성된 객체는 치워버리고 올바르지 않은 방식으로 생성한 객체를 사용하는 실수를 하곤 합니다.

어디선가
BasicHttpBinding_IRequestImpl 객체를 직접 new BasicHttpBinding_IRequestImpl() 해서 사용해서 정작 컴포넌트 스캔으로 올바르게 생성된 객체는 사용하지 않을 가능성이 매우 큽니다.


2014년 9월 27일 오전 12:24, 아치즈 <upstyle...@gmail.com>님이 작성:

더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.



--
* 까먹지말자! http://kwon37xi.egloos.com

아치즈

unread,
Sep 28, 2014, 10:08:07 AM9/28/14
to ks...@googlegroups.com
권남님 좋은 정보 감사합니다. 알려주신 대로 한번 확인해보겠습니다.

2014년 9월 27일 오전 8:33, KwonNam Son <kwon...@gmail.com>님이 작성:
Reply all
Reply to author
Forward
0 new messages