Java 使用Spring注入bean时出现nullPointerException
我是Spring3.2.5的新手,我试图将一个bean作为属性注入另一个bean中,但当我想使用该属性时,它总是空的 我正在使用以下配置: applicationContext.xml: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">
<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()