Java 使用Spring注入bean时出现nullPointerException

Java 使用Spring注入bean时出现nullPointerException,java,spring,nullpointerexception,javabeans,Java,Spring,Nullpointerexception,Javabeans,我是Spring3.2.5的新手,我试图将一个bean作为属性注入另一个bean中,但当我想使用该属性时,它总是空的 我正在使用以下配置: applicationContext.xml: <bean id="subscriptionService" class="fake.services.SubscriptionService"> </bean> <bean id="restController" class="fake.RestController">

我是Spring3.2.5的新手,我试图将一个bean作为属性注入另一个bean中,但当我想使用该属性时,它总是空的

我正在使用以下配置:

applicationContext.xml:

<bean id="subscriptionService" class="fake.services.SubscriptionService">
</bean>

<bean id="restController" class="fake.RestController">
    <property name="subscriptionService" ref="subscriptionService"></property>
</bean>
ISubscriptionService.java:

public interface ISubscriptionService {

public UUID subscribe();

}
SubscriptionService.java

 public class SubscriptionService implements ISubscriptionService {

/**
 * 
 */
public SubscriptionService() {
}

/**
 * Subscribes a user and returns a uuid for the queue
 * @return  the uuid for the queue
 */
public UUID subscribe() {
    return UUID.randomUUID();
}

}
我错过了什么

谢谢

更新:

我得到的错误是:

2014年11月14日下午2:15:37 com.sun.jersey.spi.container.ContainerResponse MapPableContainerException Grave:无法创建RuntimeException 映射到响应,重新抛出到HTTP容器 位于的java.lang.NullPointerException false.RestController.subscribeRestController.java:42 at sun.reflect.NativeMethodAccessorImpl.invoke0Native方法位于 sun.reflect.NativeMethodAccessorImpl.invokeUnknown源位于 sun.reflect.DelegatingMethodAccessorImpl.invokeUnknown源位于 java.lang.reflect.Method.invokeUnknown源代码位于 com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invokeJavaMethodInvokerFactory.java:60 在 com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker.\u dispatchAbstractResourceMethodDispatchProvider.java:205 在 com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.DispatcherResourceJavaMethodDispatcher.java:75 在 com.sun.jersey.server.impl.uri.rules.HttpMethodRule.acceptHttpMethodRule.java:302 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.acceptRightHandPathRule.java:147 在 com.sun.jersey.server.impl.uri.rules.ResourceClassRule.acceptResourceClassRule.java:108 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.acceptRightHandPathRule.java:147 在 com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.acceptRootResourceClassesRule.java:84 在 com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequestWebApplicationImpl.java:1542 在 com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequestWebApplicationImpl.java:1473 在 com.sun.jersey.server.impl.application.WebApplicationImpl.HandlerRequestWebApplicationImpl.java:1419 在 com.sun.jersey.server.impl.application.WebApplicationImpl.HandlerRequestWebApplicationImpl.java:1409 在 com.sun.jersey.spi.container.servlet.WebComponent.serviceWebComponent.java:409 在 com.sun.jersey.spi.container.servlet.ServletContainer.serviceServletContainer.java:558 在 com.sun.jersey.spi.container.servlet.ServletContainer.serviceServletContainer.java:733 在javax.servlet.http.HttpServlet.serviceHttpServlet.java:727 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:303 在 org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 org.apache.tomcat.websocket.server.WsFilter.doFilterWsFilter.java:52 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:241 在 org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invokeFilterSecurityInterceptor.java:118 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilterFilterSecurityInterceptor.java:84 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.access.ExceptionTranslationFilter.doFilterExceptionTranslationFilter.java:113 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilterAnonymousAuthenticationFilter.java:113 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.DoFilterSecurity ContextHolderAwareRequestFilter.java:154 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterBasicAuthenticationFilter.java:201 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternalWebAsyncManagerIntegrationFilter.java:50 在 org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:106 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframewor k、 security.web.context.SecurityContextPersistenceFilter.doFilterSecurityContextPersistenceFilter.java:87 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.FilterChainProxy.doFilterInternalFilterChainProxy.java:192 在 org.springframework.security.web.FilterChainProxy.doFilterFilterChainProxy.java:160 在 org.springframework.web.filter.DelegatingFilterProxy.invokedelegatingfilterproxy.java:343 在 org.springframework.web.filter.DelegatingFilterProxy.doFilterDelegatingFilterProxy.java:260 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:241 在 org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 fake.restutils.ResponseFilter.doFilterInternalResponseFilter.java:29 在 org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:106 在 org.springframework.web.filter.DelegatingFilterProxy.invokedelegatingfilterproxy.java:343 在 org.springframework.web.filter.DelegatingFilterProxy.doFilterDelegatingFilterProxy.java:260 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:241 在 org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 org.apache.catalina.core.StandardWrapperValve.invokeStandardWrapperValve.java:220 在 org.apache.catalina.core.StandardContextValve.invokeStandardContextValve.java:122 在 org.apache.catalina.authenticator.AuthenticatorBase.invokeAuthenticatorBase.java:503 在 org.apache.catalina.core.StandardHostValve.invokeStandardHostValve.java:170 在 org.apache.catalina.valves.ErrorReportValve.invokeErrorReportValve.java:103 在 org.apache.catalina.valves.AccessLogValve.invokeAccessLogValve.java:950 在 org.apache.catalina.core.StandardEngineValve.invokeStandardenginievalve.java:116 在 org.apache.catalina.connector.CoyoteAdapter.serviceCoyoteAdapter.java:421 在 org.apache.coyote.http11.AbstractHttp11Processor.processAbstractHttp11Processor.java:1070 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.processAbstractProtocol.java:611 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.runJIoEndpoint.java:314 位于java.util.concurrent.ThreadPoolExecutor.runWorkerUnknown源 位于java.util.concurrent.ThreadPoolExecutor$Worker.runUnknown Source 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.runTaskThread.java:61 位于java.lang.Thread.runUnknown Source

2014年11月14日下午2:15:37 org.apache.catalina.core.StandardWrapperValve 调用Grave:Servlet.service 应用程序a généréune异常java.lang.NullPointerException位于 false.RestController.subscribeRestController.java:42 at sun.reflect.NativeMethodAccessorImpl.invoke0Native方法位于 sun.reflect.NativeMethodAccessorImpl.invokeUnknown源位于 sun.reflect.DelegatingMethodAccessorImpl.invokeUnknown源位于 java.lang.reflect.Method.invokeUnknown源代码位于 com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invokeJavaMethodInvokerFactory.java:60 在 com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker.\u dispatchAbstractResourceMethodDispatchProvider.java:205 在 com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.DispatcherResourceJavaMethodDispatcher.java:75 在 com.sun.jersey.server.impl.uri.rules.HttpMethodRule.acceptHttpMethodRule.java:302 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.acceptRightHandPathRule.java:147 在 com.sun.jersey.server.impl.uri.rules.ResourceClassRule.acceptResourceClassRule.java:108 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.acceptRightHandPathRule.java:147 在 com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.acceptRootResourceClassesRule.java:84 在 com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequestWebApplicationImpl.java:1542 在 com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequestWebApplicationImpl.java:1473 在 com.sun.jersey.server.impl.application.WebApplicationImpl.HandlerRequestWebApplicationImpl.java:1419 在 com.sun.jersey.server.impl.application.WebApplicationImpl.HandlerRequestWebApplicationImpl.java:1409 在 com.sun.jersey.spi.container.servlet.WebComponent.serviceWebComponent.java:409 在 com.sun.jersey.spi.container.servlet.ServletContainer.serviceServletContainer.java:558 在 com.sun.jersey.spi.container.servlet.ServletContainer.serviceServletContainer.java:733 在javax.servlet.http.HttpServlet.serviceHttpServlet.java:727 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:303 在 组织a pache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 org.apache.tomcat.websocket.server.WsFilter.doFilterWsFilter.java:52 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:241 在 org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invokeFilterSecurityInterceptor.java:118 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilterFilterSecurityInterceptor.java:84 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.access.ExceptionTranslationFilter.doFilterExceptionTranslationFilter.java:113 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilterAnonymousAuthenticationFilter.java:113 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.DoFilterSecurity ContextHolderAwareRequestFilter.java:154 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterBasicAuthenticationFilter.java:201 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternalWebAsyncManagerIntegrationFilter.java:50 在 org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:106 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilterSecurityContextPersistenceFilter.java:87 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:342 在 org.springframework.security.web.FilterChainProxy.doFilterInternalFilterChainProxy.java:192 在 org.springframework.security.web.FilterChainProxy.doFilterFilterChainProxy.java:160 在 org.springframework.web.filter.DelegatingFilterProxy.invokedelegatingfilterproxy.java:343 在 org.springframework.web.filter.DelegatingFilterProxy.doFilterDelegatingFilterProxy.java:260 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:241 在 org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 fake.restutils.ResponseFilter.doFilterInternalResponseFilter.java:29 在 org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:106 在 org.springframework.web.filter.DelegatingFilterProxy.invokedelegatingfilterproxy.java:343 在 org.springframework.web.filter.DelegatingFilterProxy.doFilterDelegatingFilterProxy.java:260 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:241 在 org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:208 在 org.apache.catalina.core.StandardWrapperValve.invokeStandardWrapperValve.java:220 在 org.apache.catalina.core.StandardContextValve.invokeStandardContextValve.java:122 在 org.apache.catalina.authenticator.AuthenticatorBase.invokeAuthenticatorBase.java:503 在 org.apache.catalina.core.StandardHostValve.invokeStandardHostValve.java:170 在 org.apache.catalina.valves.ErrorReportValve.invokeErrorReportValve.java:103 在 org.apache.catalina.valves.AccessLogValve.invokeAccessLogValve.java:950 在 org.apache.catalina.core.StandardEngineValve.invokeStandardenginievalve.java:116 在 org.apache.catalina.connector.CoyoteAdapter.serviceCoyoteAdapter.java:421 在 org.apache.coyote.http11.AbstractHttp11Processor.processAbstractHttp11Processor.java:1070 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.processAbstractProtocol.java:611 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.runJIoEndpoint.java:314 位于java.util.concurrent.ThreadPoolExecutor.runWorkerUnknown源 位于java.util.concurrent.ThreadPoolExecutor$Worker.runUnknown Source 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.runTaskThread.java:61 位于java.lang.Thread.runUnknown Source

您是否实现了ISubscriptionService接口?applicationConte中的subscriptionService bean
xml应该指的是该接口的实现。

我最终解决了它,或者说找到了让它工作的方法。 问题是jersey为每个请求装入一个新对象,并且bean只在服务器启动时注入一次,因此在jersey在请求时随后创建对象时,bean不会注入新对象,并且返回空指针异常

我向控制器添加了以下方法:

/**
 * Get the subscription bean
 * @return the subscriptionService
 */
public ISubscriptionService getSubscriptionService(ServletContext servletContext) {
    ApplicationContext ctx = WebApplicationContextUtils
            .getWebApplicationContext(servletContext);
    return ctx.getBean("subscriptionService", ISubscriptionService.class);
}
打电话给服务部,我就这么做了

this.getSubscriptionService(servletContext).subscribe()

希望它能帮助周围的其他人

我想你是在尝试创建一个Web服务,在这种情况下,你的@RestController注释也在这里丢失。我添加了stacktraceis这整个堆栈跟踪?你的bean不是spring管理的bean,所以spring永远不会向其中注入bean。您的bean由Jersey而不是spring管理。检查jersey文档,了解jersey Spring的正确集成。我编辑了我的问题,因为我复制了接口而不是问题中的实现。抱歉,在发布之前,我没有看到它。
this.getSubscriptionService(servletContext).subscribe()