Spring: введите URL для ресурса classpath - PullRequest
15 голосов
/ 02 января 2011

Я хочу внедрить URL ресурса classpath таким образом, чтобы не создавать зависимость от Spring в Бине.Это означает, что bean-компонент не должен использовать интерфейсы / классы Spring.Как я могу это сделать?

Ответы [ 4 ]

15 голосов
/ 02 января 2011

Spring может неявно преобразовывать classpath:... значения в java.net.URL:

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

.

<bean class = "Foo">
    <property name = "url" value = "classpath:..." />
</bean>
4 голосов
/ 15 сентября 2011

Исходя из ответа axtavt, если вы позволите себе аннотации Spring в бобе, вы можете сделать это следующим образом:

@Value("classpath:myClasspathLocation") private URL url;
2 голосов
/ 02 января 2011

создайте свою собственную реализацию весеннего ресурса, расширив org.springframework.core.io.ClassPathResource, например MyClasspathResource, расширяет ClassPathResource и внедрите этот тип в ваш bean-компонент. Таким образом, вы не зависите от пружины и можете позже переопределить свой ресурс чем-то другим.

<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>
1 голос
/ 02 января 2011

Вряд ли есть что-то, что не соответствует пружине Концепция ресурсов Spring .

Например, вы можете использовать Гуава * InputSupplier в качестве альтернативы, но вам не хватает мощных стандартных функций пружины, если вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...