Bean의 Spring에 의존성을 생성하지 않는 방식으로 클래스 패스 리소스의 URL을 삽입하고 싶습니다. 즉, 빈은 Spring의 인터페이스/클래스를 사용하면 안된다. 어떻게해야합니까?스프링 : 클래스 패스 리소스에 대한 URL을 입력하십시오.
답변
봄은 암시 적으로 java.net.URL
에 classpath:...
값을 변환 할 수 있습니다 :
public class Foo {
private URL url;
...
}
.
<bean class = "Foo">
<property name = "url" value = "classpath:..." />
</bean>
발생 원인 : org.springframework.core.convert.ConversionFailedException : "classpath : etc/warmup.xml"값을 'java.lang.String'유형에서 'java.net.URL'유형으로 변환 할 수 없습니다. 중첩 예외는 java.net.MalformedURLException : 알 수없는 프로토콜 : classpath – IttayD
@IttayD : Spring 3.0.2에서 제대로 작동합니다. 경로는 기존 자원을 가리켜 야합니다. – axtavt
봄 3.0.4 있습니다. 봄의 소스 코드를 살펴본 결과 클래스 패스가 처리되는 곳을 볼 수 없습니다. 다른 URL도 있습니다. 내가보기에는 URL로 변환하려고합니다. "classpath"에 대한 URLStreamHandler 구현을 찾을 수 없습니다. – IttayD
Spring's resource concept과 동등한 비 스프링은 거의 없습니다.
예를 들어 Guava의 InputSupplier을 사용할 수 있지만 그렇게하면 강력한 표준 봄 기능이 누락됩니다.
MyClasspathResource와 같이 org.springframework.core.io.ClassPathResource를 확장하여 Spring 리소스를 직접 구현하여 ClassPathResource를 확장하고이 유형을 빈에 삽입한다. 이렇게하면 봄에 의존 할 필요가 없으며 나중에 다른 것으로 리소스를 재 구현할 수 있습니다.
<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>
자신이 빈에서 주석을 봄 수 있다면, 당신은 이런 식으로 작업을 수행 할 수 axtavt의 대답에 이어 :
@Value("classpath:myClasspathLocation") private URL url;
- 1. 클래스 패스 리소스를 스프링 3 빈으로 주입
- 2. Picturebox에 URL을 입력하십시오.
- 3. 개미 빌드의 클래스 패스
- 4. RED5 오류 - 클래스 패스
- 5. 자바 클래스 패스 문제
- 6. jQuery 패스 값 클래스
- 7. <object> 안에 HTML의 패스 문자열을 입력하십시오.
- 8. 리소스에 대한 모든 문자열
- 9. 클래스 패스 이전 JAR의 대체 클래스
- 10. 자동으로 SVN URL을 svn info에 입력하십시오.
- 11. 개미의 클래스 패스 설정 문제
- 12. jar 내의 클래스 패스 리소스
- 13. 자바 클래스 패스 관련 질의
- 14. java -jar 클래스 패스 문제
- 15. Unwieldy Java 클래스 패스 축소
- 16. 스프링 편안한 URL을 사용하는 Java
- 17. 패스
- 18. 봄 3.0 웹 애플리케이션 않는 NoClassDefFoundError - 클래스 패스 문제
- 19. 정적 리소스에 대한 MapRoute 추가 ASP.NET MVC
- 20. 비보안 리소스에 대한 브라우저 경고
- 21. 리소스에 대한 WPF 코드 숨김?
- 22. RESTful 리소스에 대한 액세스 제한
- 23. ActionLink에 대한 routeValues 사전을 패스
- 24. 또 다른 Ant + JUnit 클래스 패스 문제
- 25. 패스 변수
- 26. Clojure 상자 : 클래스 패스 문제 (멍청한 질문)
- 27. 에이전트 클래스 패스 설정 - 그라인더 Java
- 28. ":"및 "." 클래스 패스 선언을 사용하는 java 호출에서
- 29. 메이븐 톰캣 플러그인 - 추가 클래스 패스 추가
- 30. Javassist로 컴파일 된 클래스의 클래스 패스
정확히, "URL"은 무엇을 의미합니까? 이것은 클래스 패스 리소스를 가진 다소 인공적인 개념입니다 - 당신은 그 URL로 무엇을 할 것입니까? – skaffman
스트림을 열고 스트림에서 읽기 – IttayD
클래스 경로 리소스 인 경우 경로 자체를 주입하지 않는 이유는 무엇입니까? Spring 리소스 추상화에는 가치가 없다. – skaffman