当前位置: 首页 > 知识库问答 >
问题:

使用Spring初始化Properties对象

仲承福
2023-03-14
public class StorageConfiguration extends Properties {
    private final String PROPERTY_NAME_1 = "property.key";

    public String getProperty1() {
        return this.getProperty(PROPERTY_NAME_1);
    }

    public void setProperty1(String property1) {
        this.setProperty(PROPERTY_NAME_1, property1);
    }
}
public class Storage {
    StorageConfiguration storageConfiguration;

    @Autowired
    public void setStorageConfiguration(StorageConfiguration storageConfiguration) {
        this.storageConfiguration = storageConfiguration;
    }

    public void init() {
        // Initialize properties in this class using StorageConfiguration.
    }
}
<bean id="storage" class="com.k4rthik.labs.Storage" init-method="init">
    <property name="storageConfiguration" ref="storageConfiguration" />
</bean>
<bean id="storageConfiguration"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="storageConfiguration">
        <props>
            <prop key="property.key">property_value</prop>
        </props>
    </property>
</bean>

我预计Spring会通过将属性“property.key”设置为“property_value”来初始化StorageConfiguration对象。

但是,我得到以下异常

org.springframework.beans.factory.beanCreationException:创建类路径资源[applicationContext.xml]中定义的名为“storage”的bean时出错:在设置bean属性“authorization config”时无法解析对bean“storage configuration”的引用;嵌套异常是org.springframework.beans.factory.beanCreationException:创建类路径资源[applicationContext.xml]中定义的名为“authorization config”的bean时出错:设置属性值时出错;嵌套异常是org.springframework.beans.notwritablePropertyException:bean类[org.springframework.beans.factory.config.propertiesFactoryBean]的无效属性“Storage Configuration”:bean属性“Storage Configuration”不可写或具有无效的setter方法。setter的参数类型与getter的返回类型匹配吗?

共有1个答案

滕胜涝
2023-03-14

PropertiesFactoryBean创建properties类型的bean。

若要创建StorageConfiguration,可以创建一个复制构造函数

public class StorageConfiguration
{
    public StorageConfiguration(Properties defaults) {
        super(defaults);
    }
}

那么这个应该管用:

<bean id="storageConfiguration" class="..StorageConfiguration">
  <constructor-arg>

   <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
        <props>
            <prop key="property.key">property_value</prop>
        </props>
    </property>
  <bean>
  </constructor-arg>
</bean>
<bean id="storageConfiguration" class="..StorageConfiguration">
  <constructor-arg>   
        <props>
            <prop key="property.key">property_value</prop>
        </props>
  </constructor-arg>
</bean>
 类似资料:
  • 我是Spring MVC的新手,我正在做一些测试。我试图找到一些关于这个问题的答案,但大多数都引用了Spring3.11,我使用的是上一个版本:4.1.6。 我希望在应用程序启动时加载一个“.properties”文件,并使用其中的信息创建一个bean,以便在应用程序的所有上下文中访问它。 我认为(不确定)我在root-context.xml中正确地声明了bean: 我也认为我正确地制作了bean

  • 我在使用Mockito进行单元测试初始化对象时遇到了一些困难 这是我的测试代码 要测试的代码 RecTangleService、CircleService和SquareService用注释我尝试了很多选项,最终得出结论。我没有得到我错在哪里。我试着在网上搜索了很多地方,但找不到任何帮助。

  • 我想使用“=”符号初始化MyClass的对象。 例如。字符串a=“你好”; 我想做 这是我用构造函数写的类

  • 问题内容: 我有一个使用Spring的类初始化我的Log4J日志工厂的Web应用程序。基本上,它使用不在类路径中的配置文件来初始化Log4J。 这是配置: 但是,在应用程序启动时出现此错误: 大量的Spring应用程序上下文初始化消息被打印到控制台。我认为这是因为Spring在有机会初始化记录器之前正在进行初始化应用程序的工作。如果很重要,我将在Log4J之上使用SLF4J。 有什么办法可以使Lo

  • 问题内容: 我在用Java工作。 我通常会这样设置一些对象: 问题是:在此示例中是否等于,按原样我可以假定对未初始化的对象进行空检查将是准确的? 问题答案: 正确,未显式初始化的引用类型的静态成员和实例成员都由Java 设置为。相同的规则适用于数组成员。 根据Java语言规范的第4.12.5节: 变量的初始值 程序中的每个变量在使用值之前都必须具有一个值: 每个类变量,实例变量或数组组件在创建时均