Spring中对象属性的XML配置

时间:2015-07-01 19:07:33

标签: java xml spring

我花了几天时间在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。

1 个答案:

答案 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();