Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试在Struts2中自动关联Spring数据MongoRepository_Java_Xml_Spring_Mongodb_Struts2 - Fatal编程技术网

Java 尝试在Struts2中自动关联Spring数据MongoRepository

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插件: &

我正在学习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 ...>