属性未传递给bean



在下面的代码中,我在myClass.javaprivate File ratesFile = new File(ratesFilePath);行得到一个NullPointer

据我所知,我的属性文件很好,我正在将它导入到我的.xml配置中,并将属性传递给我的类OK。我的getter和setter似乎也很好。关于为什么我的属性没有传递给我的类,有什么建议吗?

春季批次2.1.8

myClass.properties:

rates_file_path=/opt/rates
rates_file=rates.txt

myClass.xml:

<bean id="myClassProps" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:conf/myClass.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>

<bean id="myClass" class="com.stuff.blah.myClass">
<property name="ratesFilePath" value="${rates_file_path}/${rates_file}" />
</bean>

myClass.java

public class myClass implements Tasklet, InitializingBean {
private String ratesFilePath;
private File ratesFile = new File(ratesFilePath);
public String getRatesFilePath() {
return ratesFilePath;
}
public void setRatesFilePath(String ratesFilePath) {
this.ratesFilePath = ratesFilePath;
}
}

myClass中,

private File ratesFile = new File(ratesFilePath);

是引发代码的错误。

当调用构造函数时,ratesFilePathratesFile都被初始化。

因为ratesFilePath没有任何可用于初始化的值,所以它被设置为null

ratesFile尝试初始化时,它将使用ratesFilePath,即null,并将引发NullPointerException

要解决此问题,请首先将ratesFile设置为null

private File ratesFile = null;

在确认路径不是null后,在ratesfilePath的setter方法上设置ratesFile

public void setRatesFilePath(String ratesFilePath) {
this.ratesFilePath = ratesFilePath;
if(ratesFilePath == null) ratesFile = null;
else ratesFile = new File(ratesFilePath);
}

相关内容

最新更新