无法实例化bean

时间:2014-02-04 18:08:06

标签: java spring

我正在尝试使用spring实现一个简单的Web服务。以下bean声明已添加到app-ctx.xml:

   <bean class="com.user.services.MessageService_BindingImpl" scope="request"/>

一切都很完美。之后,我决定尝试通过构造函数使用注入 - 我添加了一个带有一个参数的简单构造函数(String类型),并且我修改了bean混淆:

  <bean class="com.user.services.MessageService_BindingImpl" scope="request">
  <constructor-arg type="java.lang.String" value="Hello world"/></bean>

之后我得到了以下异常:

  

java.lang.InstantiationException:com.user.services.MessageService_BindingImpl

看起来我的构造函数有一些东西。添加默认的非arg构造函数后,异常消失。如何使用重载的构造函数?感谢。

MessageService_BindingImpl -

public class MessageService_BindingImpl implements com.user.service.MessageService_PortType {

   public MessageService_BindingImpl (String hello) {
   }

   public ReadMessagesResponse readMessages(ReadMessagesRequest readMessagesRequest) throws RemoteException {
      MessageService mService = new MessageService();
      return mService.readmessages();
   }
}

1 个答案:

答案 0 :(得分:1)

也许我误解了你的问题。

你问为什么

<bean class="com.user.services.MessageService_BindingImpl" scope="request"/>

这样的课程失败了
public class MessageService_BindingImpl implements com.user.service.MessageService_PortType {

   public MessageService_BindingImpl (String hello) {
   }

   ...
}

如果是这样,那么答案是通过不提供任何constructor-arg,Spring会尝试使用你的类'无参数构造函数。由于你没有,它无法使用它。