Я хочу ввести URL-адрес ресурса пути к классам таким образом, чтобы не создавать зависимость от Spring в Bean. Значение bean не должно использовать Spring интерфейсы/классы. Как я могу это сделать?
Spring: URL-адрес для добавления ресурса classpath
Ответ 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, если вы это сделаете.