Подтвердить что ты не робот

Spring: URL-адрес для добавления ресурса classpath

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

4b9b3361

Ответ 1

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

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

.

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

Ответ 2

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

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

Ответ 3

создайте собственную реализацию ресурса spring, расширив org.springframework.core.io.ClassPathResource, как 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>

Ответ 4

Вряд ли что-либо не spring, эквивалентное Spring ресурсная концепция.

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