使用Resource 作为属性

使用Resource 作为属性


前面介绍了Spring 提供的资源访问策略,但这些依赖访问策略要么需要使用 Resource 实现类,要么需要使用ApplicationContext 来获取资源。

实际上,当应用程序中的 Bean 实例需要访问资源时,Spring 有更好的解决方法:直接利用依赖注入。从这个意义上来看,Spring 框架不仅充分利用了策略模式来简化资源访问,而且还将策略模式和IoC进行充分地结合,最大程度地简化了Spring 资源访问


归纳起来,如果 Bean 实例需要访问资源,有如下两种解决方案:
代码中获取 Resource 实例。
使用依赖注入。


对于第一种方式,当程序获取 Resource 实例时,总需要提供 Resource 所在的位置,不管通过FileSystemResource 创建实例,还是通过 ClassPathResource 创建实例,或者通过 ApplicationContext的getResource0 方法获取实例,都需要提供资源位置。

这意味着:资源所在的物理位置将被耦合到代码中,如果资源位置发生改变,则必须改写程序。

因此,通常建议采用第二种方法,让Spring为 Bean 实例依赖注入资源


让Spring为Bean实例依赖注入资源

使用Resource作为属性,通俗来讲,通过注入的方式,把资源的位置不是写在代码中,而是放在bean文件中,降低了耦合度。

1.创建依赖注入类,定义属性和方法

public class ResourceBean {
    private Resource resource;

    public void setResource(Resource resource) {
        this.resource = resource;
    }
    public Resource getResource() {
        return resource;
    }

  public void parse(){
      System.out.println(resource.getFilename());
      System.out.println(resource.getDescription());
  }
}



    
        
    

2.测试 

public class TestBean {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        ResourceBean resourceBean = context.getBean(ResourceBean.class);
        resourceBean.parse();
    }
}

 

你可能感兴趣的:(java,开发语言)