0
我花了幾天時間研究Spring中使用XML配置注入方法的教程,並着手嘗試應用它。這些教程適用於簡單的示例。我的項目涉及更多一點。 這是場景:我將包含要讀取的文件的文件路徑的對象ReadTLEFileRequest傳遞給ReadTLEFile類(通過接口類實現)。 ReadTLEFile是文件得到處理等等Spring中對象屬性的XML配置
package useCases;
import java.io.IOException;
public interface IReadTLEFile {
public ReadTLEFileResult readFile(ReadTLEFileRequest object)
throws IOException, FileEmptyException,
FileIncorrectFormatException, FileIncorrectDataException;
}
package useCases;
public class ReadTLEFileRequest {
String filepath;
public ReadTLEFileRequest(String filepath) {
this.filepath = filepath;
}
public String getFilePath() {
return filepath;
}
}
主要方法目前看起來是這樣的(和執行沒有問題):
public static void main(String[] args) {
String filepath = "TLE files/geostationary.txt";
ReadTLEFileRequest request = new ReadTLEFileRequest(filepath);
IReadTLEFile reader = new ReadTLEFile(request);
try {
reader.readFile(request);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
我想使用依賴注入,所以我想主要方法需要進行修改,以成爲這樣的事情:
AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
try{
ReadTLEFileRequest object = (ReadTLEFileRequest) context.getBean("requestObject");
object.readFile(request);
}
finally{
context.close();
}
的beans.xml的文件包含
<bean id="requestFile" class="useCases/ReadTLEFileRequest">
<property name="requestObject">
<bean id="requestObject" class="useCases/ReadTLEFileRequest"></property>
</bean>
本質上,問題是:如何正確構造具有屬性的對象的XML bean配置,以及如何爲這種特殊情況實例化IoC。
您的解決方案是不正確的。 filepath是一個String對象而不是一個bean,所以你不應該用這個名字來聲明一個bean並把它作爲參考。 另外,如果你有一個從ReadTLEFile對象到請求對象的依賴關係,並且這個依賴關係是用適當的配置注入的,爲什麼你需要用已經注入到對象屬性中的參數調用object.readFile? – iullianr
您可以將filepath bean類屬性添加爲class =「java.lang.String」。 TLE文件/ geostationary.txt –
Innocuous
反饋幫助。謝謝。仍然收到我無法解決的錯誤消息。代碼居住在這裏:https://github.com/Carla-de-Beer/Java/tree/master/DI%20problem/ReadTLEFile – user2781042