Spring设置java.io.File属性使用java.lang.String bean

时间:2016-08-04 06:01:24

标签: java spring

我在学习Spring技术时发现了一件奇怪的事情。

我将一个java.lang.String类型的bean注入一个类型为java.io.File的bean属性,但该程序仍然正常运行。

我想知道

  1. 内部发生了什么?
  2. 这是有效用法还是技巧?
  3. 这是弹簧配置文件stringtofile.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:c="http://www.springframework.org/schema/c"
           xmlns:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"
           default-lazy-init="true">
    
        <bean id="file_str"
              class="java.lang.String"
              c:_="C:\tmp\test.hi"/>
    
        <bean id="file"
              class="stringtofile.FileWrapper"
              p:file-ref="file_str"/>
    </beans>
    

    这是我的测试课程。

    package stringtofile;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import java.io.File;
    
    public class FileWrapper {
        File file;
    
        public File getFile() {
            return file;
        }
    
        public FileWrapper setFile(File file) {
            this.file = file;
            return this;
        }
    
        public static void main(String[] args) {
            ApplicationContext ctx =
                    new ClassPathXmlApplicationContext("stringtofile.xml");
            FileWrapper fileWrapper =
                    (FileWrapper) ctx.getBean("file");
            System.out.println(fileWrapper.getFile());
        }
    }
    

1 个答案:

答案 0 :(得分:1)

由您的案例中的PropertyEditors FileEditor

完成

请查看此处的文档以获取更多详细信息:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html