Spring:为类路径资源注入URL

时间:2011-01-02 12:40:38

标签: java spring

我想以一种不会在Bean中创建对Spring的依赖的方式注入类路径资源的URL。意思是,bean不应该使用Spring的接口/类。我怎么能这样做?

4 个答案:

答案 0 :(得分:15)

Spring可以隐式地将classpath:...值转换为java.net.URL

public class Foo {
    private URL url;
    ...
}

<bean class = "Foo">
    <property name = "url" value = "classpath:..." />
</bean>

答案 1 :(得分:4)

根据axtavt的回答,如果你允许自己在bean中使用Spring注释,你可以这样做:

@Value("classpath:myClasspathLocation") private URL url;

答案 2 :(得分:2)

通过扩展org.springframework.core.io.ClassPathResource来创建自己的spring资源实现,如MyClasspathResource扩展ClassPathResource并将此类型注入到bean中。像这样,你对spring没有任何依赖,以后可以用其他东西重新实现你的资源。

<bean class="myBean">
 <property name="classPathType">
  <bean class="org.test.bla.MyClasspathResource">
   <constructor-arg index="0" value="classpath:/org/test/bla/MyUrl" />
  </bean>
 </property>
</bean>

答案 3 :(得分:1)

几乎没有任何非弹簧相当于Spring's resource concept

例如,您可以使用GuavaInputSupplier替代,但如果您这样做,则缺少强大的标准弹簧功能。