Java 尝试在Struts2中自动关联Spring数据MongoRepository
我正在学习Struts 2框架(只是为了好玩:),我想使用Spring数据框架将我的web应用程序连接到MongoDB后端。现在通常我只是创建一个扩展MongoRepository的存储库,然后将其自动连接到我的应用程序中,就是这样 然而,这一次这样做并不太有效。我不断收到NullPointerException,这意味着我的存储库不是自动连接的。有人知道出了什么问题吗 编辑:我创建了一个简单的GitHub示例来解释这个想法 在我的pom.xml中,我添加了Struts-Spring插件:Java 尝试在Struts2中自动关联Spring数据MongoRepository,java,xml,spring,mongodb,struts2,Java,Xml,Spring,Mongodb,Struts2,我正在学习Struts 2框架(只是为了好玩:),我想使用Spring数据框架将我的web应用程序连接到MongoDB后端。现在通常我只是创建一个扩展MongoRepository的存储库,然后将其自动连接到我的应用程序中,就是这样 然而,这一次这样做并不太有效。我不断收到NullPointerException,这意味着我的存储库不是自动连接的。有人知道出了什么问题吗 编辑:我创建了一个简单的GitHub示例来解释这个想法 在我的pom.xml中,我添加了Struts-Spring插件: &
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.4.1</version>
</dependency>
谢谢,
Joachim您忘了指导Struts2如何使用Spring作为对象工厂: 将以下常量放入struts.xml配置中:
<constant name="struts.objectFactory" value="spring" />
<package ...>
更多关于的信息,不过我想你已经知道了,因为你的其他配置似乎都很好。是的,我已经有了这个选项(但是我的值org.apache.struts2.spring.StrutsSpringObjectFactory)。我确信我的applicationContext中的bean被识别(当我给出错误的包/类名时,我得到一个ClassNotFoundError)。我只是无法在我的应用程序中@Autowire他们。你不知道你在回答。顺便说一句,他不是在尝试将applicationContext中定义的bean自动连接到一个动作(或拦截器)中吗?智能猜测,比如jQuery.Yes。我正在尝试将HelloWorldRepository自动连接到我的HelloAction中。请发布完整的applicationContext.xml和完整的web.xml。您是否正在尝试自动连接操作或其他bean?自动连接其他bean(在本例中为MongoRepository-但我无法让任何在我的applicationContext中定义的bean工作).你的工作意思是什么?当我调用具有@Autowire注释的bean上的方法时,我总是得到一个nullpointerexception。所以它没有被实例化/注入。你能发布stacktrace吗?
<context:component-scan base-package="com.jseminck.hello.world" />
<!-- Register Mongo Instance -->
<mongo:mongo id="mongo" host="localhost" port="27017" />
<!-- for defining mongo template -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="nortal" />
</bean>
<!-- For defining mongo repository -->
<mongo:repositories base-package="com.jseminck.hello.world.repository" />
@Repository
public interface HelloWorldRepository extends MongoRepository<HelloWorld, String> {
}
java.lang.NullPointerException
com.jseminck.struts2.HelloAction.execute(HelloAction.java:20)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
<constant name="struts.objectFactory" value="spring" />
<package ...>