JAX-WS 프로젝트에서 작업 중이며 이제는 내 유틸리티 중 하나에 종속성 주입을 추가하고 싶습니다.JAX-WS 프로젝트에서 Spring과 함께 DI를 사용할 때 NPE
유틸리티에는 인터페이스가 있습니다. GeocodeUtil 및 두 가지 구현 인 GeocodeUtilGoogleImpl 및 GeocodeUtilYahooImpl.
Heres는<bean id="geocodeUtil" class="com.company.GeocodeUtilGoogleImpl"/>
<bean id="myService" class="com.company.MyService">
<property name="geocodeUtil" ref="geocodeUtil" />
</bean>
내 web.xml을 (봄에 관련된 부분 만) : 나는 다음과 같은 한 내 applicationContext.xml에서
public class MyService {
private GeocodeUtil geocodeUtil;
/* getter and setter for geocodeUtil */
}
: 자, 내 서비스 클래스에서 나는 다음이
<!-- Spring context -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- Listeners -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
나는이면 MyService 개체의 인스턴스를 생성하고 geocodeUtil를 사용하려고 , 나는 NullPointerException이 있고 IT 구현이 주입되지 않았 음을 나에게 보인다. 이상하게 생각하는 점은 getter/setter를 제거하자마자 응용 프로그램이 시작될 때 충돌하고 Spring은 누락 된 setter/getter에 대해 불평하여 XML 구성이 실제로 올바르다 고 생각하게합니다.
스프링 관련 Java 주석을 사용하고 있지 않습니다.
도움을 주시면 대단히 감사하겠습니다.
유익한 답변에 감사드립니다. 내가 대답에서 수집 한 것부터 주석을 사용하여 AppContext를 통해 bean을 가져야하는 것을 피할 수 있습니까? 저는 이전에 Wicket 프로젝트에서 Spring을 사용했고,이 프로젝트에서는 "@SpringBean"이라는 주석을 사용할 수있었습니다. 일반 Spring에 대해이 주석에 해당하는 항목이 있습니까? – John
@Autowired를 사용하여 서비스 또는 @Resource를 연결할 수 있습니다. 두 주석에는 모두 +와 -가 있습니다. 스프링 문서를보십시오. 그러나 종속성을 주입하도록 웹을 구성해야합니다. 즉, 과 같은 내용을 응용 프로그램 컨텍스트에 추가해야합니다 (http://static.springsource.org/spring/ 참조). docs/3.0.x/spring-framework-reference/html/beans.html # beans-annotation-config) spring-mvc를 사용하지 않기 때문에 수행해야하는 다른 구성이있을 수 있습니다. –