java - 突然我的 spring.xml 不会实例化我的类并且发生错误异常

标签 java spring struts2 netbeans-7

我遇到了一个我无法理解的奇怪错误...当我运行我的 Web 项目时...我的 jsp 显示了。但是点击提交底部后,它挂起然后出现错误结果。我不明白我做错了什么......这就像 3 个小时试图检查我的问题。但现在我需要一些帮助..谢谢大家。

Unable to instantiate Action, lotmovement.action.RegisterAction,  defined for 'register' in namespace '/'Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'registeraction' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [lotmovement.action.RegisterAction]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring.xml]; nested exception is java.lang.StackOverflowError
    org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
    org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    java.security.AccessController.doPrivileged(Native Method)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    lotmovement.action.RegisterAction.<init>(RegisterAction.java:27)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    java.lang.Class.newInstance0(Class.java:372)
    java.lang.Class.newInstance(Class.java:325)
    com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:131)
    com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:162)
    com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:151)
    com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:121)
    com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:300)
    com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:400)
    com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)
    org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:501)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:432)

在 tomcat 服务器上,这种情况不断重复......

Nov 26, 2012 3:10:51 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@2d43b35f: defining beans [userprofile,registeraction,insertuserprofile,entitystart,recordexistuserprofile]; root of factory hierarchy
Nov 26, 2012 3:10:51 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@50016db: defining beans [userprofile,registeraction,insertuserprofile,entitystart,recordexistuserprofile]; root of factory hierarchy
Nov 26, 2012 3:10:51 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@7ef1277f: defining beans [userprofile,registeraction,insertuserprofile,entitystart,recordexistuserprofile]; root of factory hierarchy
Nov 26, 2012 3:10:51 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@3d510eb6: defining beans [userprofile,registeraction,insertuserprofile,entitystart,recordexistuserprofile]; root of factory hierarchy
Nov 26, 2012 3:10:51 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@66893099: defining beans [userprofile,registeraction,insertuserprofile,entitystart,recordexistuserprofile]; root of factory hierarchy
Nov 26, 2012 3:17:59 PM org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/LotMovement_5spingtest]

这是我的 XML 文件。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="userprofile"  class="lotmovement.business.entity.UserProfile">

    </bean>

    <bean id="registeraction"  class="lotmovement.action.RegisterAction">

    </bean>  

    <bean id="insertuserprofile"  
          class="lotmovement.business.crud.InsertUserProfile">

    </bean>


    <bean id="entitystart"  
          class="lotmovement.business.crud.EntityStart">

    </bean>

    <bean id="recordexistuserprofile"  
           class="lotmovement.business.crud.RecordExistUserProfile">

    </bean>


</beans>

这是我的一些代码..

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lotmovement.action;

import com.opensymphony.xwork2.ActionSupport;
import lotmovement.business.crud.EntityStart;
import lotmovement.business.crud.InsertUserProfile;
import lotmovement.business.crud.RecordExistUserProfile;
import lotmovement.business.entity.UserProfile;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 *
 * @author god-gavedmework
 */
public class RegisterAction extends ActionSupport {

    private static String userId;
    private static String password;
    private static String firstName;
    private static String lastName;
    private static int securityLevel;
    ApplicationContext context =
            new ClassPathXmlApplicationContext("spring.xml");
    EntityStart es = (EntityStart) context.getBean("entitystart");

    @Override
    public void validate() {
        es.StartDbaseConnection();
        RecordExistUserProfile reup =
                (RecordExistUserProfile) context.getBean("recordexistuserprofile");
        if (reup.checkrecordexist()) {
            addActionError("record already exist.");
        }
    }

    @Override
    public String execute() {



        InsertUserProfile iup =
                (InsertUserProfile) context.getBean("insertuserprofile");



        iup.Insert();


        return SUCCESS;
    }

这是我的 WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>register.jsp</welcome-file>
    </welcome-file-list>
</web-app>

最佳答案

您正在使用 RegisterAction 中的这一行创建无限循环

ApplicationContext context =
        new ClassPathXmlApplicationContext("spring.xml");

循环是您调用 Spring 容器,它创建一个 RegisterAction,它(如上所示)创建一个 Spring 容器,它创建一个 RegisterAction....

您不应该在 Spring Bean 中直接引用 ApplicationContext。您应该使用配置(setter 或构造函数注入(inject))来设置 bean 的依赖项。你需要这样做

spring.xml

<bean id="insertUserProfile" class="lotmovement.business.crud.InsertUserProfile"/>

<bean id="registeraction"  class="lotmovement.action.RegisterAction">
  <property name="insertUserProfile" ref="insertUserProfile"/>
</bean>  

然后您将向 RegisterAction 添加方法 setInsertUserProfile。 Spring 将使用上下文中指定的 bean(在本例中为新的 insertUserProfile)调用 setter。您需要对从上下文引用的所有 bean 执行此操作。

您可能想对 Spring 构造函数注入(inject)进行一些研究,因为它是注入(inject)永远不需要更改的依赖项的“更好”方式。

关于java - 突然我的 spring.xml 不会实例化我的类并且发生错误异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557861/

相关文章:

带有 gui 的 Java hangman 游戏,递增/递减数字的问题

java - Eclipse 中的内存不足错误

java - 从 Tomcat 9 到客户端的 Websocket 二进制消息拆分为 2 个或更多 tcp 数据包

java - 有没有办法破解显示:table to make the table element values submit as input elements?

java - 为什么对 List 进行排序时,compareTo 参数始终为 null

java - 在android中提取位图的顶部

java - 设计时未找到类异常

mysql - Spring 模板: how to execute multiple SQL statements?

java - Struts2 教程在 .action 页面上给出 404

java - 使用 Struts2 将 Session 对象保存在 Cookie 中