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