突然我的spring.xml无法实例化我的类,并发生错误异常 [英] Suddenly my spring.xml won't instantiate my classes and Error Exception occurs

查看:107
本文介绍了突然我的spring.xml无法实例化我的类,并发生错误异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I encountered a weird error that I could not understand... When I run my web project... My jsp displayed. But after clicking the submit bottom, it hangs then error results. I could not understand what I do wrong.. it is like 3hours trying to check my problem. But right now i need some help.. Thanks guys.

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服务器上,此操作不断重复..

And on the tomcat server, this keeps on repeating..

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

This is my 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中的这一行创建一个无限循环

You are creating an infinite loop with this line in RegisterAction

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

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

The loop is you invoke the Spring Container, which creates a RegisterAction, which (shown above) creates a Spring Container, which creates a RegisterAction....

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

You shouldn't be referencing an ApplicationContext directly in your Spring Beans. You should use configuration (setter or constructor injection) to set the dependencies of your beans. You need to do this

spring.xml

spring.xml

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

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

然后,您将方法setInsertUserProfile添加到RegisterAction. Spring将从您的上下文中使用指定的bean调用setter(在这种情况下为新的insertUserProfile).您将需要对从上下文引用的所有bean进行此操作.

Then you will add a method setInsertUserProfile to your RegisterAction. Spring will invoke the setter with the specified bean from your context (in this case, a new insertUserProfile). You will need to do this for all of the beans that you are referencing from the context.

您可能想对Spring构造函数注入进行一些研究,因为它是注入不需要更改的依赖项的更好"方式.

You might want to do some research on Spring constructor injection as it's a "better" way of injecting dependencies that never need to change.

这篇关于突然我的spring.xml无法实例化我的类,并发生错误异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆