我花了几天时间在Spring上编写关于使用XML配置注入方法的教程,并开始尝试应用它。这些教程适用于简单的示例。我的项目涉及更多。 这就是场景:我将一个包含文件路径的对象ReadTLEFileRequest传递给ReadTLEFile类(通过接口类实现)。 ReadTLEFile是处理文件等的地方。
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。
答案 0 :(得分:-1)
您的配置可能会是这样的
<br>
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;
}
}
package useCases;
class ReadTLEFile implements IReadTLEFile{
private ReadTLEFileRequest request;
public void setRequest(ReadTLEFileRequest request){
this.request = request;
}
}
<bean id="requestFile" class="useCases.ReadTLEFile">
<property name="request"><ref bean = "requestObject"/></property>
</bean>
<bean id="requestObject" class="useCases.ReadTLEFileRequest">
<property name = "filepath"><value>TLE files/geostationary.txt</value></property>
</property>
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
IReadTLEFile object = context.getBean("requestObject",ReadTLEFile.class);
object.readFile();