首页 > 解决方案 > 如何在 ApplicationContext.xml 中定义一个没有构造函数的 bean?

问题描述

我有一堂课

public class DataStore {
    public String name;
    public String username;
    public String password;
    public String token;
    public String connectionString;
    public String type;
    public String scheme;

    public boolean usesBasicAuth;
    public boolean usesBearerAuth;
}

我需要在另一个项目中为它创建一个 bean。但我需要以某种方式填写这些字段。问题是我不能使用<constructor-arg ... />,因为没有构造函数。

下面的代码导致 BeanCreationException:“无法解析匹配的构造函数”

 <bean id="dataStore"
      class="com.fressnapf.sdk.dataaccess.services.DataStore">
    <constructor-arg index="0" value="${spring.datastore.name}"/>
    ...
</bean>

标签: javaxmljavabeansapplicationcontext

解决方案


假设,您有公共(您的 getter 和 setter)属性,并且只有“默认(无 args)构造函数”,那么您可以将配置更改为:

<bean id="dataStore" class="com.fressnapf.sdk.dataaccess.services.DataStore">
  <property name="connectionString" value="..."/>
  <!-- ... -->
</bean>

使用property而不是constructor-arg.

文档(Spring 4.2):https ://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html


推荐阅读