我是新來的春天框架,我有一些問題,試圖讀取和使用文件的屬性。總結一下,我想要做的是定義一個類,它存儲所有讀取的屬性,第二個類使用這些屬性來執行某些操作,第三個類使用結果。春天:使用從文件讀取的屬性
存儲屬性的類是:
@Configuration
public class PropertyClass {
@Value("${propertyName")
private Integer propertyName;
@Bean(name = "propertyName")
public Integer getPropertyName() {
return propertyName;
}
}
讀取和使用這些屬性的類:
@Component
public class PropertyReader {
private Integer myProperty;
@Autowire
@Qualifier("propertyName")
public void setMyProperty(
Integer myProperty) {
this.myProperty = myProperty;
}
public Integer getValue() {
//do something with myProperty
return result;
}
}
和使用PropertyReader類:
public class Utilizer {
private PropertyReader getPropertyReader() {
ApplicationContext context = new AnnotationConfigApplicationContext(PropertyReader.class);
PropertyReader reader = (BakerStorageClassConfigHelper)context.getBean("PropertyReader");
return reader;
}
}
我已將類註冊爲application-config.xml文件中的bean:
<bean class="property.class.package.PropertyClass" depends-on="Environment" />
<bean class="reader.class.package.PropertyReader" />
而且我有一個environment.xml文件,其中的「環境」bean用位置規則定義以查找屬性文件。
現在發生了什麼,在類「熱利用」當我試圖讓「ApplicationContext的」對象拋出一個異常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PropertyReader':
Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire method: public void reader.class.package.PropertyReader.setMyProperty(java.lang.Integer);
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [java.lang.Integer]
found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
我試圖改變PropertyReader類的註釋@Repository或@Service,並試圖添加一個@ComponentScan與指定的PropertyClass包,但沒有爲我工作..
有人可以給我一些建議嗎?
謝謝!
在應該注入的setMyProperty方法中有一個myProperty參數,但事實上它沒有在任何地方指定,是嗎?也許你可以嘗試在PropertyReader bean聲明中設置這個屬性值。 –
謝謝你的建議格林......我可以問你如何做到這一點? – giocarmine
嘗試用以下代替PropertyReader bean聲明: –